All these if can be a large single one, no? For example:
`if self.observation_ids != other.observation_ids or isinstance(other, self.__class__) is False or np.any(self.observation_ids != other.observation_ids) .... return False`