IntervalScheduler::IntervalScheduler(Intervals &inputIntervals) : n(inputIntervals.size()), bestGeneScore(vector<double>(n+1, 0)), p(vector<size_t>(n+1, 0)) { sort(inputIntervals.begin(), inputIntervals.end()); // We want the gene list to start at index 1 ivals.push_back(WeightedInterval(-1,-1,-1)); for (auto i : inputIntervals) ivals.push_back(i); for (size_t j = 1; j < n+1; j++) { p[j] = previousDisjointInterval(j); } }
void Intervals::difference(Intervals is) { for (int i = 0; i < size(); i++) { for (int j = 0; j < is.size(); j++) { Intervals temp = _int[i].difference(is[j]); if (temp.size() > 1) { erase(begin() + i); insert(begin() + i, temp.begin(), temp.end()); } else if (temp.size() == 0) { erase(begin() + i); } else if (temp[0] != _int[i]) { _int[i] = temp[0]; } } } }
void Intervals::cat(Intervals i) { _int.insert(end(), i.begin(), i.end()); }