""" PrecomputedCatalog """
#;Spel-UChile
import os
import sys
import math
from .StarCatalog.star import Star
[docs]
class SpelUChileStars:
""" SpelUChileStars """
_stars_ra_rad = []
_stars_dec_rad = []
_stars_size_pixels = []
def __init__(self):
""" SpelUChileStars """
self._pc = PrecomputedCatalog(pattern=None)
# XXX TODO not correct
[docs]
class PrecomputedCatalog:
""" PrecomputedCatalog """
CATALOG_DIR = './../RPI/Catalog'
precompute_cats = [
'cat_RA_0_DEC_-90',
'cat_RA_0_DEC_-60', 'cat_RA_0_DEC_-30', 'cat_RA_0_DEC_0', 'cat_RA_0_DEC_30', 'cat_RA_0_DEC_60',
'cat_RA_0_DEC_90',
'cat_RA_30_DEC_-60', 'cat_RA_30_DEC_-30', 'cat_RA_30_DEC_0', 'cat_RA_30_DEC_30', 'cat_RA_30_DEC_60',
'cat_RA_60_DEC_-60', 'cat_RA_60_DEC_-30', 'cat_RA_60_DEC_0', 'cat_RA_60_DEC_30', 'cat_RA_60_DEC_60',
'cat_RA_90_DEC_-60', 'cat_RA_90_DEC_-30', 'cat_RA_90_DEC_0', 'cat_RA_90_DEC_30', 'cat_RA_90_DEC_60',
'cat_RA_120_DEC_-60', 'cat_RA_120_DEC_-30', 'cat_RA_120_DEC_0', 'cat_RA_120_DEC_30', 'cat_RA_120_DEC_60',
'cat_RA_150_DEC_-60', 'cat_RA_150_DEC_-30', 'cat_RA_150_DEC_0', 'cat_RA_150_DEC_30', 'cat_RA_150_DEC_60',
'cat_RA_180_DEC_-60', 'cat_RA_180_DEC_-30', 'cat_RA_180_DEC_0', 'cat_RA_180_DEC_30', 'cat_RA_180_DEC_60',
'cat_RA_210_DEC_-60', 'cat_RA_210_DEC_-30', 'cat_RA_210_DEC_0', 'cat_RA_210_DEC_30', 'cat_RA_210_DEC_60',
'cat_RA_240_DEC_-60', 'cat_RA_240_DEC_-30', 'cat_RA_240_DEC_0', 'cat_RA_240_DEC_30', 'cat_RA_240_DEC_60',
'cat_RA_270_DEC_-60', 'cat_RA_270_DEC_-30', 'cat_RA_270_DEC_0', 'cat_RA_270_DEC_30', 'cat_RA_270_DEC_60',
'cat_RA_300_DEC_-60', 'cat_RA_300_DEC_-30', 'cat_RA_300_DEC_0', 'cat_RA_300_DEC_30', 'cat_RA_300_DEC_60',
'cat_RA_330_DEC_-60', 'cat_RA_330_DEC_-30', 'cat_RA_330_DEC_0', 'cat_RA_330_DEC_30', 'cat_RA_330_DEC_60',
]
def __init__(self, pattern=None, collection='Normal'):
""" PrecomputedCatalog """
self._collection = collection
if pattern is None or pattern == '':
self._all_found = self._find_stars_by_list()
else:
self._all_found = self._find_stars_by_seatch(pattern)
def _find_stars_by_seatch(self, pattern):
""" find_stars_by_seatch """
directory_path = PrecomputedCatalog.CATALOG_DIR + '/' + self._collection
all_found = {}
for file_name in os.listdir(directory_path):
if file_name not in pattern:
continue
# decode file using format: cat_RA_130_DEC_60
_, _, file_ra, _, file_dec = file_name.split('_')
file_ra = int(file_ra)
file_dec = int(file_dec)
file_path = '%s/cat_RA_%d_DEC_%d' % (directory_path, file_ra, file_dec)
with open(file_path, encoding='utf-8') as fd:
# The file contains four numbers per line:
# 109.20750 -67.95722 3.98 511
# RA DEC MAG REF#
star_list = []
for line in fd:
v = [float(x) for x in line.split()]
star_list.append(Star(int(v[3]), None, None, math.radians(v[0]), math.radians(v[1]), v[2]))
all_found[(file_ra, file_dec)] = star_list
# return list bucketed by file RA/DEC
return all_found
def _find_stars_by_list(self):
""" _find_stars_by_list """
pc = self._find_stars_by_seatch(precompute_cats)
# uniq the stars ...
all_found = {}
for v in pc.stars.values():
for star in v:
if star in all_stars:
continue
all_found[star] = star
# return list bucketed by 0/0
return {(0,0): all_found}
def _find_radec_mag(self):
""" _find_radec_mag """
ra_rad = []
dec_rad = []
size_pixels = []
for star in all_stars.keys():
ra_rad.append(star.ra)
dec_rad.append(star.dec)
size_pixels.append(mag_map(star.mag))
# ra_rad = ra_fix(ra_rad)
return ra_rad, dec_rad, size_pixels
@property
def collections(self):
""" collections """
return self._all_found.keys()
@property
def stars(self):
""" stars """
return self._all_found
def _main(args=None):
""" _main """
if args is None:
args = sys.argv[1:]
p = PrecomputedCatalog(args)
print('')
print(list(sorted(p.collections)))
print('')
for k,v in p.stars.items():
print(k)
print('\t', v)
print('')
if __name__ == '__main__':
_main()