Example #1
0
    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)
Example #4
0
    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)
Example #5
0
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