def derive(self, gl=M('Gear (L) Position'), gn=M('Gear (N) Position'), gr=M('Gear (R) Position'), gc=M('Gear (C) Position')): up_state = vstack_params_where_state( (gl, 'Up'), (gn, 'Up'), (gr, 'Up'), (gc, 'Up'), ).all(axis=0) down_state = vstack_params_where_state( (gl, 'Down'), (gn, 'Down'), (gr, 'Down'), (gc, 'Down'), ).all(axis=0) transit_state = vstack_params_where_state( (gl, 'In Transit'), (gn, 'In Transit'), (gr, 'In Transit'), (gc, 'In Transit'), ).any(axis=0) param = first_valid_parameter(gl, gn, gr, gc) self.array = np_ma_masked_zeros_like(param.array) self.array[repair_mask(up_state, repair_duration=None)] = 'Up' self.array[repair_mask(down_state, repair_duration=None)] = 'Down' self.array[repair_mask(transit_state, repair_duration=None)] = 'In Transit' self.array = nearest_neighbour_mask_repair(self.array)
def derive(self, gear_L=M('Gear (L) Up In Transit'), gear_N=M('Gear (N) Up In Transit'), gear_R=M('Gear (R) Up In Transit'), gear_C=M('Gear (C) Up In Transit')): combine_params = [(x, 'Retracting') for x in (gear_L, gear_R, gear_N, gear_C) if x] if len(combine_params): self.array = vstack_params_where_state(*combine_params).any(axis=0)
def derive(self, brk1=M('Rotor Brake (1) Engaged'), brk2=M('Rotor Brake (2) Engaged')): stacked = vstack_params_where_state( (brk1, 'Engaged'), (brk2, 'Engaged'), ) self.array = stacked.any(axis=0) self.array.mask = stacked.mask.any(axis=0)
def derive(self, eng_1_oei=M('Eng (1) One Engine Inoperative'), eng_2_oei=M('Eng (2) One Engine Inoperative'), autorotation=S('Autorotation')): oei = vstack_params_where_state((eng_1_oei, 'Active'), (eng_2_oei, 'Active')).any(axis=0) for section in autorotation: oei[section.slice] = False self.array = oei
def derive(self, ase1=M('ASE (1) Engaged'), ase2=M('ASE (2) Engaged'), ase3=M('ASE (3) Engaged')): stacked = vstack_params_where_state( (ase1, 'Engaged'), (ase2, 'Engaged'), (ase3, 'Engaged'), ) self.array = stacked.sum(axis=0) self.offset = offset_select('mean', [ase1, ase2, ase3])
def derive(self, gl=M('Gear (L) In Transit'), gn=M('Gear (N) In Transit'), gr=M('Gear (R) In Transit'), gc=M('Gear (C) In Transit')): # Join all available gear parameters and use whichever are available. self.array = vstack_params_where_state( (gl, 'In Transit'), (gn, 'In Transit'), (gr, 'In Transit'), (gc, 'In Transit'), ).any(axis=0)
def derive(self, gl=M('Gear (L) Up'), gn=M('Gear (N) Up'), gr=M('Gear (R) Up'), gc=M('Gear (C) Up')): # Join all available gear parameters and use whichever are available. self.array = vstack_params_where_state( (gl, 'Up'), (gn, 'Up'), (gr, 'Up'), (gc, 'Up'), ).all(axis=0) # remove any spikes _slices = runs_of_ones(self.array == 'Down') _slices = slices_remove_small_gaps(_slices, 2, self.hz) for _slice in _slices: self.array[_slice] = 'Down'