Giter Club home page Giter Club logo

unisallsky_oh_temp_map's Introduction

UNISALLSKY_OH_TEMP_MAP

This software reads in images from UNIS' Allsky Airglow camera and produces a map of mesosphere 87km temperature above Svalbard.

Author

Rowan Dayton-Oxland University of Southampton Github

Installation

Download or pull from Github

Requirements

  • Python >= 3.10
  • .ipynb capabilites e.g. Jupyter Notebook, Visual Studio code
  • OS independent
  • numpy, pandas, matplotlib, pathlib, struct, glob, datetime

Contributing

Pull requests are welcome, for major changes please open an issue first to discuss what you would like to change.

Algorithm

  • Read in images (.img format) from UNIS Allsky airglow camera
  • Calibrate images by using the corner (dark) values
  • Calculate the rotational temperature from the P1(2) P1(4) line ratios (Channels 5 and 6 of the camera)
  • Create temperature keograms

Temperatures are calculated according to the equation

$$ T_{rot} = \frac{\frac{hc}{k} (F_b - F_a)}{ln(\frac{I_{a} A_{b} (2J_{b} + 1)}{I_{b} A_{a} (2J_{a} + 1)})} $$

Where $F,A,J_{a, b}$ are known quantum coefficients, and $I_{a,b}$ are the intensities of the lines in each pixel.

Data for the two emission lines

Symbol F(J') (cm) Wavelength (A) J' Einstein A Channel
P1(2) -45.170339 8399 1.5 0.434 5
P1(4) 113.752553 8465 3.5 0.579 6

Examples

Run the script including all the functions. Current iteration in .ipynb format sonopen the file and run in Jupyter Notebook or another appropriate editor.

Notebook contains examples of generating a single temperature map and a keogram.

import glob

# Get the files from the CH5 and CH6 folders (typical format for UNIS Allsky Airglow Camera data)
Channel5files = glob('filepath/CH5/*.img')
Channel6files = glob('filepath/CH6/*.img')

# Use get_image_pairs to match up the images in time
image_pairs = get_image_pairs(Channel5files, Channel6files)

# To get the time from a specific image file as datetime obj
fname = Channel5files[0]  # For example
time = time_fname[fname]

# To read an image file
header, image = read_img_file(fname)

# To get the dark value from the corner of the image
darkvalue = corner_dark(image)

# To get the calibrated image file (using the corner dark)
calibrated_img = calibrated(image)

# To get a temperature map from a ch5 image and a ch6 image (calibrate first)
  # Example for first pair of images
temp_map = temperature_map(image_pairs[0][0], image_pairs[0][1]) 

# To get the cleaned up version an image or map
cleaned = cleanup_map(image)

# To retrieve a list of all the temperature maps for a folder or some of a folder
tempmaps = get_tempmaps(Channel5files, Channel6files, len(Channel5files))
# or
tempmaps = get_tempmaps(Channel5files, Channel6files, 10)
# To get the first 10 temperature maps

# To produce a keogram from a folder or some of a folder (as above)
timestamps, keogram = get_keogram(Channel5files, Channel6files, len(Channel5files))

Limitations

The calibration of the Airglow camera (true darks, flat fields) is not done so temperature estimates are not accurate - when compared with the 'true' value from the SilverBullet, NIPR and Aura cameras, this code gave 100K higher temperatures. However, it gives a picture of temperature variations which can be useful to detect e.g. pressure waves which will be visible in the keograms.

References and links

UNIS Allsky Airglow Camera

https://pypi.org/project/oh-einstein-temp-convert/

Holmen, S., Trends and variability of polar mesopause region temperatures attributed to atmospheric dynamics and solar activity, PhD Thesis, UiT The Arctic University of Norway, 2016.

Mark P. J. van der Loo, Gerrit C. Groenenboom (2008) Theoretical transition probabilities for the OH Meinel system. J. Chem. Phys. 21 March 2007; 126 (11): 114314.

Data

This code is for image data for UNIS Allsky Airglow Camera, for access to the camera data, the contacts are listed here.

Acknowledgements

Noora Partamies, Mikko Syrjasuo, James Plank

License

GNU GPLv3.0

unisallsky_oh_temp_map's People

Contributors

r-daytonoxland 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.