In [1]:
import heroespy.util.meta as meta
from astropy.units import Unit as u
from astropy.units import Quantity

In [9]:
import pandas
import numpy

In [1]:
from heroespy.payload import payload
heroes = payload()

In [5]:
heroes.telescope[0].detector.plate_scale


Out[5]:
$3.4 \; \mathrm{\frac{{}^{\prime\prime}}{pix}}$

In [7]:
for telescope in heroes.telescope:
    events = telescope.detector.get_events


3.4 arcsec / pix
3.4 arcsec / pix
3.4 arcsec / pix
3.4 arcsec / pix
3.4 arcsec / pix
3.4 arcsec / pix
3.4 arcsec / pix
3.4 arcsec / pix

In [15]:
df = pandas.DataFrame(numpy.arange(1,6), index=pandas.date_range('1/1/2011', periods=5, freq='H'))

In [30]:
n = df.reindex(pandas.date_range('1/1/2011', periods=10, freq='30T')).interpolate()

In [31]:
n[pandas.date_range('1/1/2011', periods=10, freq='30T')]


---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-31-13032a7d46ba> in <module>()
----> 1 n[pandas.date_range('1/1/2011', periods=10, freq='30T')]

/Users/schriste/anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in __getitem__(self, key)
   1676         if isinstance(key, (Series, np.ndarray, list)):
   1677             # either boolean or fancy integer index
-> 1678             return self._getitem_array(key)
   1679         elif isinstance(key, DataFrame):
   1680             return self._getitem_frame(key)

/Users/schriste/anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in _getitem_array(self, key)
   1720             return self.take(indexer, axis=0, convert=False)
   1721         else:
-> 1722             indexer = self.ix._convert_to_indexer(key, axis=1)
   1723             return self.take(indexer, axis=1, convert=True)
   1724 

/Users/schriste/anaconda/lib/python2.7/site-packages/pandas/core/indexing.pyc in _convert_to_indexer(self, obj, axis, is_setter)
   1066                     if isinstance(obj, tuple) and is_setter:
   1067                         return {'key': obj}
-> 1068                     raise KeyError('%s not in index' % objarr[mask])
   1069 
   1070                 return indexer

KeyError: "['2010-12-31T19:00:00.000000000-0500' '2010-12-31T19:30:00.000000000-0500'\n '2010-12-31T20:00:00.000000000-0500' '2010-12-31T20:30:00.000000000-0500'\n '2010-12-31T21:00:00.000000000-0500' '2010-12-31T21:30:00.000000000-0500'\n '2010-12-31T22:00:00.000000000-0500' '2010-12-31T22:30:00.000000000-0500'\n '2010-12-31T23:00:00.000000000-0500' '2010-12-31T23:30:00.000000000-0500'] not in index"

In [16]:
x, y = g(d['rawx'], d['rawy'])

In [1]:
import heroespy.aspect
pyas_aspect = heroespy.aspect.get_pyas_aspect()

In [2]:
from astropy.time import Time
Time("2013-09-21T11:58:00.0", format='isot', scale='utc')


Out[2]:
<Time object: scale='utc' format='isot' value=2013-09-21T11:58:00.000>

In [3]:
pyas_aspect


Out[3]:
ctl_az ctl_el offset_r offset_x offset_y pointing_x pointing_y
2013-09-21 15:21:04.896474 0.009306 0.017522 68.240642 67.677825 -8.746274 67.677825 -8.746274
2013-09-21 15:21:05.396725 0.008458 0.019982 75.352491 75.260425 -3.723751 75.260425 -3.723751
2013-09-21 15:21:05.896994 0.002677 0.021439 76.446896 75.048121 14.557044 75.048121 14.557044
2013-09-21 15:21:06.397249 -0.003041 0.020853 74.510781 67.969420 30.528911 67.969420 30.528911
2013-09-21 15:21:06.897495 -0.004500 0.020708 74.680591 66.178058 34.607157 66.178058 34.607157
2013-09-21 15:21:07.397741 -0.007992 0.022531 83.483200 69.245417 46.631717 69.245417 46.631717
2013-09-21 15:21:07.897987 -0.004952 0.023957 86.260138 76.786050 39.302849 76.786050 39.302849
2013-09-21 15:21:08.398215 -0.000658 0.025301 89.733004 85.168316 28.255439 85.168316 28.255439
2013-09-21 15:21:08.898457 0.004459 0.025749 92.293783 91.243170 13.886197 91.243170 13.886197
2013-09-21 15:21:09.398704 0.007976 0.025499 93.593020 93.530136 3.430317 93.530136 3.430317
2013-09-21 15:21:09.898951 0.005726 0.024775 89.542875 89.068963 9.200342 89.068963 9.200342
2013-09-21 15:21:10.399203 0.004410 0.023543 84.541859 83.723429 11.735135 83.723429 11.735135
2013-09-21 15:21:10.899454 0.003184 0.021421 76.561775 75.436238 13.079731 75.436238 13.079731
2013-09-21 15:21:11.399711 0.000307 0.018558 65.809080 63.172777 18.440045 63.172777 18.440045
2013-09-21 15:21:11.899977 0.001773 0.016218 57.753228 56.544615 11.753377 56.544615 11.753377
2013-09-21 15:21:12.400219 0.001644 0.013793 49.156743 48.210157 9.600320 48.210157 9.600320
2013-09-21 15:21:12.900469 0.000119 0.011489 40.736224 39.042932 11.622796 39.042932 11.622796
2013-09-21 15:21:13.400717 -0.003655 0.009502 35.469457 28.948733 20.495200 28.948733 20.495200
2013-09-21 15:21:13.900952 -0.001652 0.006804 24.640545 21.588326 11.878578 21.588326 11.878578
2013-09-21 15:21:14.401199 -0.000270 0.003776 13.413945 12.557560 4.716103 12.557560 4.716103
2013-09-21 15:21:14.901445 -0.000843 -0.000340 2.827169 -1.905608 2.088431 -1.905608 2.088431
2013-09-21 15:21:15.401694 -0.006633 -0.005718 28.561417 -25.290253 13.272438 -25.290253 13.272438
2013-09-21 15:21:15.901940 -0.012884 -0.010424 53.789408 -46.811090 26.495703 -46.811090 26.495703
2013-09-21 15:21:16.402199 -0.017707 -0.013844 72.760034 -62.699219 36.916534 -62.699219 36.916534
2013-09-21 15:21:16.902444 -0.020130 -0.017284 86.505243 -76.515283 40.355526 -76.515283 40.355526
2013-09-21 15:21:17.402696 -0.018815 -0.020531 92.496844 -86.349617 33.157350 -86.349617 33.157350
2013-09-21 15:21:17.902942 -0.015768 -0.022185 92.058375 -89.241197 22.599851 -89.241197 22.599851
2013-09-21 15:21:18.403188 -0.010751 -0.024232 91.897467 -91.706711 5.918071 -91.706711 5.918071
2013-09-21 15:21:18.903439 -0.007331 -0.023792 87.238481 -87.166508 -3.542954 -87.166508 -3.542954
2013-09-21 15:21:19.403709 -0.006831 -0.025996 94.470297 -94.188533 -7.290909 -94.188533 -7.290909
... ... ... ... ... ... ... ...
2013-09-21 22:35:39.968311 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:40.468565 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:40.968831 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:41.469086 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:41.969338 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:42.469586 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:42.969980 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:43.470232 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:43.970486 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:44.470751 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:44.971003 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:45.471254 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:45.971476 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:46.471889 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:46.972142 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:47.472391 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:47.972622 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:48.472952 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:48.973328 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:49.473572 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:49.973831 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:50.474079 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:50.974329 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:51.474553 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:51.974803 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:52.475028 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:52.975276 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:53.475526 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:53.975772 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000
2013-09-21 22:35:54.476023 0.000000 0.000000 800.524828 794.000000 -102.000000 0.000000 0.000000

103820 rows × 7 columns


In [6]:


In [2]:
path = '/Applications/exelis/idl83/help/online_help/IDL/Content/Resources/Images/ColorTableWaves.bmp'

In [3]:


In [65]:
import numpy as np
from datetime import datetime, timedelta

from scipy import misc
from astropy.io import fits

image = misc.imread(path, flatten=0)

utcoffset = 6
exp = 0.01
preamp_gain = 3
analog_gain = 2
exposure_usec = 1000
target = 'Laser'
lat = 38.995317
lon = -76.856603
location = 'Greenbelt, MD'

def get_utc_now():
    return datetime.now() + timedelta(hours=utcoffset)

def datetime_to_str(d):
    return d.strftime("%Y%m%d_%H%M%S")

def create_filename():
    return 'FOXSI_SAAS_' + datetime_to_str(get_utc_now()) + '.fits'

prihdu = fits.PrimaryHDU()
image_hdr = fits.Header()
header_dict = {'TELESCOP': ('FOXSI', 'Name of source telescope package'),
               'ORIGIN': ('Macbook Pro Laptop', 'Location where file was made'),
               'WAVELNTH': (6300, 'Wavelength of the observation (ang)'),
               'WAVE_STR': ('630 Nm', 'Wavelength of observation string'),
               'INSTRUME': ('SAAS', 'Name of the instrument'),
               'OBSERVER': ('Steven D. Christe', 'Name of the observer'),
               'WAVEUNIT': ('angstrom', 'Units of WAVELNTH'),
               'PIXLUNIT': ('DN', 'Pixel units'),
               'IMG_TYPE': ('LIGHT', 'Image type'),
               'RSUN_REF': (6.96e8, ''),
               'LVL_NUM': (0, 'Level of data'),
               'EXPTIME': (exp/1e6, "Exposure time in seconds"),
               'DATE_OBS': (get_utc_now().isoformat(), "Date and time when observation of this image started (UTC)"),
               'GAIN_PRE': (preamp_gain, 'Preamp gain of CCD'),
               'GAIN_ANA': (analog_gain, 'Analog gain of CCD'),
               'DATAMIN': (np.min(image), 'Minimum value of data'),
               'DATAMAX': (np.max(image), 'Maxmimum value of data'),
               'EXPOSURE': (exposure_usec, "Exposure time in usec"), 
               'FILENAME': (create_filename(), 'Name of the data file'),
               'TARGNAME': (target, 'Name of the target'),
               'GPS_LAT': (lat, 'GPS latitude (degrees)'),
               'GPS_LON': (lon, 'GPS longitude (degrees)'),
               'LOCATION': (location, 'Location string'),
               'CONTENT': ('CCD Image', 'Description of data'),
               'CUNIT1': ('arcsec', ''),
               'CUNIT2': ('arcsec', ''),
               'WCSNAME': ('Helioprojective-cartesian', 'WCS Coordinate system'),
               'CTYPE1': ('HPLN-TAN', ''),
               'CTYPE2': ('HPLT-TAN', ''),
               'CRPIX1': (2044.574341, ''),
               'CRPIX2': (2043.035889, ''),
               'CRVAL1': (0, ''),
               'CRVAL2': (0, ''),
               'CDELT1': (0, ''),
               'CDELT2': (0, '')
               }
for key in header_dict:
    image_hdr[key] = header_dict[key]

imghdu = fits.ImageHDU(data=image, header=image_hdr)

hdulist = fits.HDUList([prihdu, imghdu])
hdulist.writeto(create_filename(), clobber=True, checksum=True)

In [66]:
f = fits.open('new.fits')
f[0].header


Out[66]:
SIMPLE  =                    T / conforms to FITS standard                      
BITPIX  =                    8 / array data type                                
NAXIS   =                    0 / number of array dimensions                     
EXTEND  =                    T                                                  
CHECKSUM= 'B9eCB6ZAB6bAB6ZA'   / HDU checksum updated 2014-10-15T10:19:07       
DATASUM = '0       '           / data unit checksum updated 2014-10-15T10:19:07 

In [67]:
f[0].data

In [68]:
f[1].header


Out[68]:
XTENSION= 'IMAGE   '           / Image extension                                
BITPIX  =                    8 / array data type                                
NAXIS   =                    3 / number of array dimensions                     
NAXIS1  =                    3                                                  
NAXIS2  =                  256                                                  
NAXIS3  =                   30                                                  
PCOUNT  =                    0 / number of parameters                           
GCOUNT  =                    1 / number of groups                               
ORIGIN  = 'Macbook Pro Laptop' / Location where file was made                   
GPS_LAT =            38.995317 / GPS latitude (degrees)                         
DATE_OBS= '2014-10-15T16:19:07.158986' / Date and time when observation of this 
CDELT2  =                    0                                                  
OBSERVER= 'Steven D. Christe'  / Name of the observer                           
GAIN_PRE=                    3 / Preamp gain of CCD                             
CDELT1  =                    0                                                  
GAIN_ANA=                    2 / Analog gain of CCD                             
PIXLUNIT= 'DN      '           / Pixel units                                    
CTYPE2  = 'HPLT-TAN'                                                            
CONTENT = 'CCD Image'          / Description of data                            
GPS_LON =   -76.85660300000001 / GPS longitude (degrees)                        
RSUN_REF=          696000000.0                                                  
WAVE_STR= '630 Nm  '           / Wavelength of observation string               
DATAMIN =                    1 / Minimum value of data                          
EXPOSURE=                 1000 / Exposure time in usec                          
IMG_TYPE= 'LIGHT   '           / Image type                                     
WAVEUNIT= 'angstrom'           / Units of WAVELNTH                              
CRVAL2  =                    0                                                  
CRPIX1  =          2044.574341                                                  
CRPIX2  =          2043.035889                                                  
CRVAL1  =                    0                                                  
TELESCOP= 'FOXSI   '           / Name of source telescope package               
LVL_NUM =                    0 / Level of data                                  
WAVELNTH=                 6300 / Wavelength of the observation (ang)            
FILENAME= 'FOXSI_SAAS_20141015_161907.fits' / Name of the data file             
CUNIT2  = 'arcsec  '                                                            
INSTRUME= 'SAAS    '           / Name of the instrument                         
CUNIT1  = 'arcsec  '                                                            
DATAMAX =                  255 / Maxmimum value of data                         
CTYPE1  = 'HPLN-TAN'                                                            
TARGNAME= 'Laser   '           / Name of the target                             
WCSNAME = 'Helioprojective-cartesian' / WCS Coordinate system                   
EXPTIME =                1E-08 / Exposure time in seconds                       
LOCATION= 'Greenbelt, MD'      / Location string                                
CHECKSUM= 'baHaeT9ZbZGabZ9Y'   / HDU checksum updated 2014-10-15T10:19:07       
DATASUM = '329214525'          / data unit checksum updated 2014-10-15T10:19:07 

In [69]:
file = ' /Users/schriste/FOXSI_SAAS_20141015_173630.fits'
f = fits.open(file)
f[0].header


Out[69]:
SIMPLE  =                    T / conforms to FITS standard                      
BITPIX  =                    8 / array data type                                
NAXIS   =                    0 / number of array dimensions                     
EXTEND  =                    T                                                  
CHECKSUM= 'BAeDB0ZBB7bBB7ZB'   / HDU checksum updated 2014-10-15T11:36:30       
DATASUM = '0       '           / data unit checksum updated 2014-10-15T11:36:30 

In [70]:
f[1].header


Out[70]:
XTENSION= 'IMAGE   '           / Image extension                                
BITPIX  =                    8 / array data type                                
NAXIS   =                    3 / number of array dimensions                     
NAXIS1  =                    3                                                  
NAXIS2  =                  256                                                  
NAXIS3  =                   30                                                  
PCOUNT  =                    0 / number of parameters                           
GCOUNT  =                    1 / number of groups                               
ORIGIN  = 'Macbook Pro Laptop' / Location where file was made                   
GPS_LAT =            38.995317 / GPS latitude (degrees)                         
DATE_OBS= '2014-10-15T17:36:30.451778' / Date and time when observation of this 
CDELT2  =                    0                                                  
OBSERVER= 'Steven D. Christe'  / Name of the observer                           
GAIN_PRE=                    3 / Preamp gain of CCD                             
CDELT1  =                    0                                                  
GAIN_ANA=                    2 / Analog gain of CCD                             
PIXLUNIT= 'DN      '           / Pixel units                                    
CTYPE2  = 'HPLT-TAN'                                                            
CONTENT = 'CCD Image'          / Description of data                            
GPS_LON =   -76.85660300000001 / GPS longitude (degrees)                        
RSUN_REF=          696000000.0                                                  
WAVE_STR= '630 Nm  '           / Wavelength of observation string               
DATAMIN =                    1 / Minimum value of data                          
EXPOSURE=                 1000 / Exposure time in usec                          
IMG_TYPE= 'LIGHT   '           / Image type                                     
WAVEUNIT= 'angstrom'           / Units of WAVELNTH                              
CRVAL2  =                    0                                                  
CRPIX1  =          2044.574341                                                  
CRPIX2  =          2043.035889                                                  
CRVAL1  =                    0                                                  
TELESCOP= 'FOXSI   '           / Name of source telescope package               
LVL_NUM =                    0 / Level of data                                  
WAVELNTH=                 6300 / Wavelength of the observation (ang)            
FILENAME= 'FOXSI_SAAS_20141015_173630.fits' / Name of the data file             
CUNIT2  = 'arcsec  '                                                            
INSTRUME= 'SAAS    '           / Name of the instrument                         
CUNIT1  = 'arcsec  '                                                            
DATAMAX =                  255 / Maxmimum value of data                         
CTYPE1  = 'HPLN-TAN'                                                            
TARGNAME= 'Laser   '           / Name of the target                             
WCSNAME = 'Helioprojective-cartesian' / WCS Coordinate system                   
EXPTIME =                1E-08 / Exposure time in seconds                       
LOCATION= 'Greenbelt, MD'      / Location string                                
CHECKSUM= 'aaEgbWBZaaBfaUBZ'   / HDU checksum updated 2014-10-15T11:36:30       
DATASUM = '329214525'          / data unit checksum updated 2014-10-15T11:36:30 

In [72]:
f[1].data.shape


Out[72]:
(30, 256, 3)

In [73]:
f = '/Users/schriste/FOXSI_SAAS_20141016_051040.fits'

In [74]:
f = fits.open(f)

In [80]:
f[1].data[2].max()


Out[80]:
0

In [ ]: