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);
        }
}
Example #2
0
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];
			}
		}
	}
}
Example #3
0
void Intervals::cat(Intervals i) {
	_int.insert(end(), i.begin(), i.end());
}