GithubHelp home page GithubHelp logo

bellalongo / fluxpal Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 4.41 MB

Given a FITS spectrum file, the script will calculate the star’s doppler shift, and fit a Voigt profile and continuum to each emission line, which is used for calculating the flux.

License: MIT License

Python 100.00%
data-analysis data-visualization emission-lines flux-calculation spectroscopy

fluxpal's Introduction

fluxpal

About fluxpal

The goal of fluxpal is to accurately calculate the emission line flux of lines in the Far Ultraviolet(FUV) range. This range contains information that can help clue in on exoplanetary atmospheres with the measurements providing insight into FUV radiation from host stars. Integrating UV spectra with X-ray data allows us to estimate the stellar corona, adding to the toolkit of exoplanet atmosphere data.

How it works

The script accomplishes the task of calculating flux by:

  1. Grouping emission lines using a preset tolerance, which can be adjusted if using a different DEM (CSV) file.
  2. Calculating the Doppler shift by fitting a composite Voigt profile to the strongest emission lines, and comparing Voigt peaks to rest wavelength to calculate.
  3. Iterating through each line, determining if noise, and then calculating the flux either using the Voigt profile or the original data.
  4. Presents a final plot of all of the final emission lines, and exports the calculations as a FITS and ECSV file.

Prerequisites

  • astropy
  • matplotlib
  • scipy
  • seaborn
  • numpy
  • pandas

Installation

  1. Clone the repository

    git clone https://github.com/bellalongo/fluxpal.git
  2. Move the fits file being used to calculate flux into the 'spectra' folder.

  3. Adjust the 'fresh_start' parameter depending on whether you want to adjust calculations on a new run
    (if first run, set to True)

    fresh_start = True
  4. Adjust the 'gaussian_smoothing' parameter depending on whether you to smooth the spectrum
    (if first run, set to False)

    gaussian_smoothing = False
  5. Run the script:

    python3 main.py spectra/fits_file.fits 'instrument' 'grating' 'star name'

Adjustments

The script can be run on its own without any adjustments, but if the star is a little finicky:

main.py

  • adjust the mask used to isolate emission lines
  • edit header if want different header information

emission_lines.py

  • adjust peak_width in 'peak_width_finder'
  • adjust tolerance used to group emission lines in 'grouping_emission_lines'
  • adjust voigt fit initial parameters

Doppler shift calculation

A plot will appear of the 'best' emission lines, with a Voigt fit fitted to it. Click 'y' if you think the line should be used to calculate Doppler shift (these lines will automatically not be considered as noise), and 'n' if the emission line if not.

doppler calculation example

Determining if noise

All lines not selected for Doppler calculation will appear, some with a Voigt profile fitted if possible to be selected as noise or not noise. Click 'y' if you think the line is noise, and 'n' if the line is not noise.

Not noise: Not noise example

Noise: Not noise example

Final plot

After all emission line selections and calculations have been made, a final plot will appear showing the spectrum and each labeled emission line. Matplotlib gives the ability to zoom into the plot, so please do so to double-check the lines. This plot is saved to the 'plots' folder.

final plot example

Using the data:

Header contains:

  • DATE: date flux was calculated
  • FILENAME: name of the fits file used to for flux calc
  • TELESCP: telescope used to measure spectrum
  • INSTRMNT: active instrument to measure spectrum
  • GRATING: grating used to measure spectrum
  • TARGNAME: name of star used in measurement
  • DOPPLER: doppler shift used to measure flux
  • WIDTH: average peak width of the emissoin lines
  • RANGE: flux range used to isolate emission line
  • WIDTHPXL: average emission line peak width in pixels
  • UPPRLIMIT: upper limit used for noise

Using the data:

ECSV Data: File columns are Ion, Rest Wavelength, Flux, Error, Blended Line, each row representing a grouped emission line.
FITS Data: FITS Table containing the same data as the ECSV file.
Note: Noise is marked as having the negative of the upper limit (3*error) as the flux and an error of 0.

fluxpal's People

Contributors

bellalongo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.