Package: themisasi
THEMIS GBO ASI ReaderRead & plot 256x256 "high resolution" THEMIS ASI ground-based imager data from Python.
THEMIS ASI data are collected with the original 2002 design, using Starlight-Xpress Lodestar MX716 cameras with monochromeSony ICX249AL imaging chips.
A subregion from full-size 752 x 582 pixels (512 x 512 pixels) are 2x2 binned to 256 x 256 pixels and retrieved over USB 1.1 for disk storage.This package also reads the THEMIS ASI star registeredplate scale,
givingazimuth and elevationfor each pixel.Installgitclonehttps://github.com/space-physics/themisasi

pipinstall-ethemisasiOptionally test the basic functionality by:pytestthemisasiUsageOne of the main ways analysts might use THEMIS-ASI data is by loading it into a 3-D array (time, x, y).Single timeThis example is where the ASI video files are in~/data/themis, and the Gakona site is selected at the time shown.importthemisasiastadat=ta.load('~/data/themis',site='gako',treq='2011-01-06T17:00:03')This returns the camera image from Gakona camera closest to the requested time, and the 'az', 'el' calibration data, if available.THEMIS-ASI outputxarray.Dataset,
which is used throughout geosciences and astronomy.
Xarray may be thought of as a "smart" Numpy array, or a multidimensional Pandas array.
A THEMIS image data stack is obtained by:dat=ta.load(...)imgs=dat['imgs']dat.timecontains the approximate time of each image (consider the finite exposure time).dat.xanddat.yare simple pixel indices, perhaps not often needed.Image + Azimuth, ElevationLoading calibration data gives azimuth, elevation for each pixel and lat, lon of each camera.importthemisasiastadat=ta.load('~/data/themis',site='gako',treq='2011-01-06T17:00:03')If an appropriate calibration file exists,datadditionally contains 'az', 'el', 'lat', 'lon' and so on to allow using data for multi-camera analyses.Coordinate conversion (optional)If desired, convert azimuth/elevation to ra/dec usingpymap3d.pipinstallpymap3dand then from within Python:importpymap3daspmrasc,decl=pm.azel2radec(dat.az,dat.el,dat.lat,dat.lon,dat.time)Download, Read and Plot THEMIS ASI DataThe data is downloaded concurrently usingasyncioandaiohttp_requests.
There is one concurrent worker launched per site, that downloads one time at a time concurrently across sites.
Thus if downloading for one site, one time downloads at a time.
If downloading for 5 sites, five files download at a time across requested times by site.Get video data from Themis all-sky imagerdata repository.
Theplate scaledata is also downloaded.
The calibration files are named*asc*.cdfor*skymap*.sav.Example: February 4, 2012, 8 UT Gakonapython-mthemisasi.download2012-02-04T08gako~/dataor via the API:importthemisasiastata.download('2012-02-04T08','gako','~/data')with the API, it is convenient to for-loop over many sites at the same time(s):sites=['fykn','gako']forsiteinsites:ta.download('2012-02-04T08',site,'~/data')With the calibration data, verify that the time range of the calibration data is appropriate for the time range of the image data.
For example, calibration data from 1999 may not be valid for 2018 if the camera was ever moved in the enclosure during maintanence.https://github.com/dib-lab/khmer/pull/1430You can optionally download from within Python:importthemisasiastata.download('2012-03-12T12','fykn','~/data')get times in a filethe convenience functionthemisasi.io.filetimes(filename)returns a list of Pythondatetimein a fileVideo Playback / PNG conversionThis example plays the video content.Use the-ooption to dump the frames to individual PNGs for easier back-and-forth viewing.
The calibration file (second filename) is optional.python-mthemisasi.video~/data/themis/thg_l1_asf_fykn_2013041408_v01.cdfPlot time series of pixel(s)Again, be sure the calibration file is appropriate for the time range of the video--the camera may have been moved / reoriented during maintenance.The pixels can be specified by (azimuth, elevation) or (lat, lon, projection altitude [km])Azimuth / Elevation:python-mthemisasi.pixelstests/thg_l1_ast_gako_20110505_v01.cdf-az6570-el4868Latitude, Longitude, Projection Altitude [kilometers]:
Typically the brightest aurora is in the 100-110 km altitude range, so a common approximate is to assume "all" of the brightness comes from a single altitude in this region.python-mthemisasi.pixelstests/thg_l1_ast_gako_20110505_v01.cdf-lla65-145100.NotesThemis site map (2009)THEMIS GBO ASI spectral response:ArticlesThese articles give vital descriptions of THEMIS GBO ASI.Mende 2008 SSRcolor instrument based on Themis:Jackel 2014ResourcesThemis GBO ASIsite coordinatesTHEMIS GBO ASIplate scaleTHEMIS GBO ASIplate scaleThemis GBO ASIdata repositoryThemis GBO ASImosaic (all sites together)data corruptionI discovered that IDL 8.0 had a problem saving structured arrays of bytes.
While current versions of IDL can read these corrupted .sav files, GDL 0.9.4 and SciPy 0.16.1 cannot.
Mypatch is part of SciPyto allow reading these files, which was incorporated into SciPy 0.18.0.As a fallback, read and rewrite the corrupted file with the IDL script in theidldirectory.