| 201 | return True |
| 202 | |
| 203 | def add_link(self, link, store_dict=False): |
| 204 | if store_dict: |
| 205 | # Selective copy; deepcopy is >5x slower |
| 206 | self._dict = { |
| 207 | "data": self.data.copy(), |
| 208 | "_affinity": self._affinity, |
| 209 | "_links": self._links.copy(), |
| 210 | "_visible": self._visible.copy(), |
| 211 | "_idx": self._idx.copy(), |
| 212 | } |
| 213 | i1, i2 = link.idx |
| 214 | if i1 in self._idx and i2 in self._idx: |
| 215 | self._affinity += link.affinity |
| 216 | self._links.append(link) |
| 217 | return False |
| 218 | if link.j1.label in self._visible and link.j2.label in self._visible: |
| 219 | return False |
| 220 | self.add_joint(link.j1) |
| 221 | self.add_joint(link.j2) |
| 222 | self._affinity += link.affinity |
| 223 | self._links.append(link) |
| 224 | return True |
| 225 | |
| 226 | def calc_pairwise_distances(self): |
| 227 | return pdist(self.xy, metric="sqeuclidean") |