def derive(self, src_1=P('Latitude (1)'), src_2=P('Latitude (2)'), src_3=P('Latitude (3)')): sources = [ source for source in [src_1, src_2, src_3] if source is not None and np.count_nonzero(source.array) > len(source.array) / 2 ] if len(sources) == 1: self.offset = sources[0].offset self.frequency = sources[0].frequency self.array = sources[0].array elif len(sources) == 2: self.array, self.frequency, self.offset = blend_two_parameters( sources[0], sources[1]) elif len(sources) > 2: self.offset = 0.0 self.frequency = 1.0 self.array = blend_parameters(sources, offset=self.offset, frequency=self.frequency)
def _get_speed_parameter(hdf, aircraft_info): thresholds = {} if aircraft_info.get('Engine Propulsion', None) == 'ROTOR': try: # Preferred source of rotor speed data parameter = hdf['Nr'] except: # Alternative if dual sources available parameter = blend_parameters((hdf['Nr (1)'], hdf['Nr (2)'])) parameter = P(name='Nr', array=parameter, data_type=parameter.dtype) thresholds['speed_threshold'] = settings.ROTORSPEED_THRESHOLD thresholds['min_duration'] = settings.ROTORSPEED_THRESHOLD_TIME # Very short dips in rotor speed before recording stops. thresholds[ 'min_split_duration'] = settings.ROTOR_MINIMUM_SPLIT_DURATION # Let's try one minute on the ground as worth splitting. # Set to 30 sec as this gives two splits and two keeps in the test data set # TODO: add to settings thresholds['hash_min_samples'] = settings.AIRSPEED_HASH_MIN_SAMPLES else: parameter = hdf['Airspeed'] thresholds['speed_threshold'] = settings.AIRSPEED_THRESHOLD thresholds['min_split_duration'] = settings.MINIMUM_SPLIT_DURATION thresholds['hash_min_samples'] = settings.AIRSPEED_HASH_MIN_SAMPLES thresholds['min_duration'] = settings.AIRSPEED_THRESHOLD_TIME return parameter, thresholds
def derive(self, src_1=P('Longitude (1)'), src_2=P('Longitude (2)'), src_3=P('Longitude (3)')): sources = [ source for source in [src_1, src_2, src_3] if source is not None \ and np.count_nonzero(source.array) > len(source.array)/2 ] if len(sources) > 1: for source in sources: source.array = repair_mask( straighten_longitude(source.array) + 180.0) if len(sources) == 1: self.offset = sources[0].offset self.frequency = sources[0].frequency self.array = sources[0].array elif len(sources) == 2: blended, self.frequency, self.offset = blend_two_parameters( sources[0], sources[1]) self.array = blended % 360 - 180.0 elif len(sources) > 2: self.offset = 0.0 self.frequency = 1.0 blended = blend_parameters(sources, offset=self.offset, frequency=self.frequency) self.array = blended % 360 - 180.0 else: self.array = np_ma_masked_zeros_like(src_1.array)
def derive(self, src_1=P('Latitude (1)'), src_2=P('Latitude (2)'), src_3=P('Latitude (3)')): sources = [ deepcopy(source) for source in [src_1, src_2, src_3] if source is not None \ and np.count_nonzero(np.ma.compressed(source.array)) > len(source.array)/2 ] for source in sources: source.array = repair_mask(source.array) if len(sources) == 1: self.offset = sources[0].offset self.frequency = sources[0].frequency self.array = sources[0].array elif len(sources) == 2: self.array, self.frequency, self.offset = blend_two_parameters( sources[0], sources[1]) elif len(sources) > 2: self.offset = 0.0 self.frequency = 1.0 self.array = blend_parameters(sources, offset=self.offset, frequency=self.frequency) else: self.array = np_ma_masked_zeros_like(src_1.array)
def _get_speed_parameter(hdf, aircraft_info): thresholds = {} if aircraft_info.get('Engine Propulsion', None) == 'ROTOR': try: # Preferred source of rotor speed data parameter = hdf['Nr'] except: # Alternative if dual sources available parameter = blend_parameters((hdf['Nr (1)'], hdf['Nr (2)'])) parameter = P(name='Nr', array=parameter, data_type=parameter.dtype) thresholds['speed_threshold'] = settings.ROTORSPEED_THRESHOLD thresholds['min_duration'] = settings.ROTORSPEED_THRESHOLD_TIME # Very short dips in rotor speed before recording stops. thresholds['min_split_duration'] = settings.ROTOR_MINIMUM_SPLIT_DURATION # Let's try one minute on the ground as worth splitting. # Set to 30 sec as this gives two splits and two keeps in the test data set # TODO: add to settings thresholds['hash_min_samples'] = settings.AIRSPEED_HASH_MIN_SAMPLES else: parameter = hdf['Airspeed'] thresholds['speed_threshold'] = settings.AIRSPEED_THRESHOLD thresholds['min_split_duration'] = settings.MINIMUM_SPLIT_DURATION thresholds['hash_min_samples'] = settings.AIRSPEED_HASH_MIN_SAMPLES thresholds['min_duration'] = settings.AIRSPEED_THRESHOLD_TIME return parameter, thresholds
def derive(self, src_1=P('Latitude (1)'), src_2=P('Latitude (2)'), src_3=P('Latitude (3)')): sources = [ source for source in [src_1, src_2, src_3] if source is not None \ and np.count_nonzero(source.array) > len(source.array)/2 ] if len(sources) == 1: self.offset = sources[0].offset self.frequency = sources[0].frequency self.array = sources[0].array elif len(sources) == 2: self.array, self.frequency, self.offset = blend_two_parameters( sources[0], sources[1] ) elif len(sources) > 2: self.offset = 0.0 self.frequency = 1.0 self.array = blend_parameters(sources, offset=self.offset, frequency=self.frequency)
def derive(self, src_1=P('Longitude (1)'), src_2=P('Longitude (2)'), src_3=P('Longitude (3)')): sources = [ source for source in [src_1, src_2, src_3] if source is not None \ and np.count_nonzero(source.array) > len(source.array)/2 ] if len(sources) > 1: for source in sources: source.array = repair_mask( straighten_longitude(source.array) + 180.0 ) if len(sources) == 1: self.offset = sources[0].offset self.frequency = sources[0].frequency self.array = sources[0].array elif len(sources) == 2: blended, self.frequency, self.offset = blend_two_parameters( sources[0], sources[1] ) self.array = blended % 360 - 180.0 elif len(sources) > 2: self.offset = 0.0 self.frequency = 1.0 blended = blend_parameters(sources, offset=self.offset, frequency=self.frequency) self.array = blended % 360 - 180.0