| 101 | } |
| 102 | |
| 103 | void WindowMaker::MakeFixedCountWindow(const BED& interval) { |
| 104 | CHRPOS interval_size = interval.end - interval.start ; |
| 105 | CHRPOS window_size = (interval_size)/_count; // integer version of ceil(interval_size/_count) |
| 106 | |
| 107 | if (window_size == 0) |
| 108 | { |
| 109 | cerr << "WARNING: Interval " |
| 110 | << interval.chrom << ":" |
| 111 | << interval.start << "-" |
| 112 | << interval.end |
| 113 | << " is smaller than the number of windows requested. Skipping." |
| 114 | << endl; |
| 115 | return; |
| 116 | } |
| 117 | if (interval_size == 0) |
| 118 | { |
| 119 | cerr << "WARNING: Interval " |
| 120 | << interval.chrom << ":" |
| 121 | << interval.start << "-" |
| 122 | << interval.end |
| 123 | << " has zero length and cannot be partitioned. Skipping." |
| 124 | << endl; |
| 125 | return; |
| 126 | } |
| 127 | |
| 128 | |
| 129 | uint32_t i=1; |
| 130 | for (CHRPOS start = interval.start; start < interval.end; start += window_size, ++i) { |
| 131 | string name = GenerateID(interval, i, _count, _reverse); |
| 132 | CHRPOS end = min(start + window_size,interval.end); |
| 133 | |
| 134 | // extend range of last interval if necessary |
| 135 | if (i == _count) |
| 136 | { |
| 137 | end = interval.end; |
| 138 | cout << interval.chrom << "\t" << start << "\t" << end << name << endl; |
| 139 | break; |
| 140 | } |
| 141 | cout << interval.chrom << "\t" << start << "\t" << end << name << endl; |
| 142 | } |
| 143 | } |
| 144 | |
| 145 | string WindowMaker::GenerateID(const BED& interval, uint32_t window_index, uint32_t num_windows, bool _reverse) const { |
| 146 | stringstream s; |
nothing calls this directly
no outgoing calls
no test coverage detected