def _find_node_boundaries(self): node_bounds = set((self.start, self.end)) node_bounds.update(self.start_sites) node_bounds.update(self.stop_sites) # nodes bounded by regions where expression changes to/from zero node_bounds.update(find_threshold_points(self.expr_data, self.start)) # nodes bounded by introns for t in self.transfrags: node_bounds.update(t.itersplices()) if self.guided_ends or self.guided_assembly: for t in self.ref_transfrags: if self.guided_ends: node_bounds.update((t.start, t.end)) if self.guided_assembly: node_bounds.update(t.itersplices()) return array('i', sorted(node_bounds))