def main(): start = datetime.date(2011, 1, 1) stop = datetime.date(2011, 1, 10) for date in date_generator.daterange(start, stop): source_file = hisparc_data.data_file(date) if not source_file: continue target_file = get_target_file(date) for events in source_file.walkNodes('/', 'Table'): if not events.name == 'events': continue target_table = target_file.createTable( os.path.split(events._v_pathname)[0], 'events', EventTimestamps, createparents=True) event_id = events.col('event_id') ext_timestamps = events.col('ext_timestamp') timestamps = events.col('timestamp') nanoseconds = events.col('nanoseconds') rows_data = zip(event_id, ext_timestamps, timestamps, nanoseconds) for row_data in rows_data: row = target_table.row row['event_id'] = row_data[0] row['ext_timestamp'] = row_data[1] row['timestamp'] = row_data[2] row['nanoseconds'] = row_data[3] row.append() target_table.flush() clean_events_table(target_file, target_table) source_file.close() target_file.close()
def main(): """Do the search for correlations between lightning strikes and events""" start = datetime.date(2011, 9, 10) stop = datetime.date(2011, 9, 10) station_ids = get_stations.get_station_ids(start) # This should be in the for loop and start should be date. # But for better performance, it is not yet.. stations = get_stations.get_station_positions(station_ids, start) for date in date_generator.daterange(start, stop): lgt_file = knmi_lightning.data_file(date) his_file = hisparc_data.data_file(date) discharges = knmi_lightning.discharges(lgt_file) for discharge in discharges: matches = [] close_station_ids = get_stations.find_close_stations(discharge, stations) for station_id in close_station_ids: events = hisparc_data.events_table(his_file, station_id) matched_events = hisparc_data.events_in_range(events, discharge['timestamp']) matches.append([station_id, matched_events['ext_timestamp']]) if len(close_station_ids) > 0: print "Discharge:", discharge print "Close stations: ", close_station_ids print "Matching events: ", matches lgt_file.close() his_file.close()