def __init__(self, src_idxs, tgt_idxs, vec_conns, byobj_conns, mode): self.src_idxs = src_idxs self.tgt_idxs = tgt_idxs self.vec_conns = vec_conns self.byobj_conns = byobj_conns # if in fwd mode, sort using src indices and in rev mode sort using tgt indices, # to increase the likelihood of slice conversion for 'get' access in order to # avoid array copies. if mode == 'fwd': self.src_slice, self.tgt_slice = to_slices(self.src_idxs, self.tgt_idxs) else: self.tgt_slice, self.src_slice = to_slices(self.tgt_idxs, self.src_idxs)
def __init__(self, src_idxs, tgt_idxs, vec_conns, byobj_conns, mode): self.src_idxs = src_idxs self.tgt_idxs = tgt_idxs self.vec_conns = vec_conns self.byobj_conns = byobj_conns if not MPI: # if in fwd mode, sort using src indices and in rev mode sort using tgt indices, # to increase the likelihood of slice conversion for 'get' access in order to # avoid array copies. if mode == 'fwd': self.src_idxs, self.tgt_idxs = to_slices(self.src_idxs, self.tgt_idxs) else: self.tgt_idxs, self.src_idxs = to_slices(self.tgt_idxs, self.src_idxs) if isinstance(self.src_idxs, slice): self._src_unique = True else: # check uniqueness of src_idxs to see if we can avoid calling np.add.at self._src_unique = np.unique(self.src_idxs).size == self.src_idxs.size