meteortools.utils.getShowerDates
1# Copyright (C) 2018-2023 Mark McIntyre 2# 3# simple script to get the active shower list from the IMO working list 4 5import datetime 6import os 7import numpy as np 8 9try: 10 from ..fileformats import imoWorkingShowerList as iwsl 11except Exception: 12 from meteortools.fileformats import imoWorkingShowerList as iwsl 13 14 15def getShowerDets(shwr, stringFmt=False, dataPth=None): 16 """ Get details of a shower 17 18 Arguments: 19 shwr: [string] three-letter shower code eg PER 20 Keyword Arguments: 21 stringFmt [bool] default False, return a string rather than a list 22 dataPth [string] path to the datafiles. Default None means data read from internal files. 23 24 Returns: 25 (id, full name, peak solar longitude, peak date mm-dd) 26 """ 27 sl = iwsl.IMOshowerList() 28 mtch = sl.getShowerByCode(shwr, useFull=True) 29 if len(mtch) > 0 and mtch['@id'] is not None: 30 id = int(mtch['@id']) 31 nam = mtch['name'] 32 pkdtstr = mtch['peak'] 33 dt = datetime.datetime.now() 34 yr = dt.year 35 pkdt = datetime.datetime.strptime(f'{yr} {pkdtstr}','%Y %b %d') 36 dtstr = pkdt.strftime('%m-%d') 37 pksollong = mtch['pksollon'] 38 else: 39 id, nam, pksollong, dtstr = 0, 'Unknown', 0, 'Unknown' 40 if stringFmt: 41 return f"{pksollong},{dtstr},{nam},{shwr}" 42 else: 43 return id, nam, pksollong, dtstr 44 45 46def getShowerPeak(shwr): 47 """ Get date of a shower peak in MM-DD format 48 49 Arguments: 50 shwr: [string] three-letter shower code eg PER 51 52 Returns: 53 peak date mm-dd 54 """ 55 _, _, _, pk = getShowerDets(shwr) 56 return pk 57 58 59def numpifyShowerData(): 60 """Refresh the numpy versions of the shower data files """ 61 abs_path = os.getenv('WMPL_LOC', default='/home/ec2-user/src/WesternMeteorPyLib') 62 iau_shower_table_file = os.path.join(abs_path, 'wmpl', 'share', 'streamfulldata.csv') 63 iau_shower_table_npy = os.path.join(abs_path, 'wmpl', 'share', 'streamfulldata.npy') 64 iau_shower_list = np.loadtxt(iau_shower_table_file, delimiter="|", usecols=range(20), dtype=str) 65 np.save(iau_shower_table_npy, iau_shower_list) 66 67 gmn_shower_table_file = os.path.join(abs_path, 'wmpl', 'share', 'gmn_shower_table_20230518.txt') 68 gmn_shower_table_npy = os.path.join(abs_path, 'wmpl', 'share', 'gmn_shower_table_20230518.npy') 69 gmn_shower_list = _loadGMNShowerTable(*os.path.split(gmn_shower_table_file)) 70 np.save(gmn_shower_table_npy, gmn_shower_list) 71 72 73def _loadGMNShowerTable(dir_path, file_name): 74 gmn_shower_list = [] 75 with open(os.path.join(dir_path, file_name), encoding='cp1252') as f: 76 for line in f: 77 if line.startswith('#'): 78 continue 79 line = line.strip() 80 line = line.replace('\n', '').replace('\r', '') 81 if not line: 82 continue 83 la_sun, L_g, B_g, v_g, dispersion, IAU_no, IAU_code = line.split() 84 gmn_shower_list.append([ 85 np.radians(float(la_sun)), 86 np.radians(float(L_g)), 87 np.radians(float(B_g)), 88 1000*float(v_g), 89 np.radians(float(dispersion)), 90 int(IAU_no)] 91 ) 92 return np.array(gmn_shower_list)
def
getShowerDets(shwr, stringFmt=False, dataPth=None):
16def getShowerDets(shwr, stringFmt=False, dataPth=None): 17 """ Get details of a shower 18 19 Arguments: 20 shwr: [string] three-letter shower code eg PER 21 Keyword Arguments: 22 stringFmt [bool] default False, return a string rather than a list 23 dataPth [string] path to the datafiles. Default None means data read from internal files. 24 25 Returns: 26 (id, full name, peak solar longitude, peak date mm-dd) 27 """ 28 sl = iwsl.IMOshowerList() 29 mtch = sl.getShowerByCode(shwr, useFull=True) 30 if len(mtch) > 0 and mtch['@id'] is not None: 31 id = int(mtch['@id']) 32 nam = mtch['name'] 33 pkdtstr = mtch['peak'] 34 dt = datetime.datetime.now() 35 yr = dt.year 36 pkdt = datetime.datetime.strptime(f'{yr} {pkdtstr}','%Y %b %d') 37 dtstr = pkdt.strftime('%m-%d') 38 pksollong = mtch['pksollon'] 39 else: 40 id, nam, pksollong, dtstr = 0, 'Unknown', 0, 'Unknown' 41 if stringFmt: 42 return f"{pksollong},{dtstr},{nam},{shwr}" 43 else: 44 return id, nam, pksollong, dtstr
Get details of a shower
Arguments:
shwr: [string] three-letter shower code eg PER
Keyword Arguments:
stringFmt [bool] default False, return a string rather than a list
dataPth [string] path to the datafiles. Default None means data read from internal files.
Returns:
(id, full name, peak solar longitude, peak date mm-dd)
def
getShowerPeak(shwr):
47def getShowerPeak(shwr): 48 """ Get date of a shower peak in MM-DD format 49 50 Arguments: 51 shwr: [string] three-letter shower code eg PER 52 53 Returns: 54 peak date mm-dd 55 """ 56 _, _, _, pk = getShowerDets(shwr) 57 return pk
Get date of a shower peak in MM-DD format
Arguments:
shwr: [string] three-letter shower code eg PER
Returns:
peak date mm-dd
def
numpifyShowerData():
60def numpifyShowerData(): 61 """Refresh the numpy versions of the shower data files """ 62 abs_path = os.getenv('WMPL_LOC', default='/home/ec2-user/src/WesternMeteorPyLib') 63 iau_shower_table_file = os.path.join(abs_path, 'wmpl', 'share', 'streamfulldata.csv') 64 iau_shower_table_npy = os.path.join(abs_path, 'wmpl', 'share', 'streamfulldata.npy') 65 iau_shower_list = np.loadtxt(iau_shower_table_file, delimiter="|", usecols=range(20), dtype=str) 66 np.save(iau_shower_table_npy, iau_shower_list) 67 68 gmn_shower_table_file = os.path.join(abs_path, 'wmpl', 'share', 'gmn_shower_table_20230518.txt') 69 gmn_shower_table_npy = os.path.join(abs_path, 'wmpl', 'share', 'gmn_shower_table_20230518.npy') 70 gmn_shower_list = _loadGMNShowerTable(*os.path.split(gmn_shower_table_file)) 71 np.save(gmn_shower_table_npy, gmn_shower_list)
Refresh the numpy versions of the shower data files