MCPcopy Create free account
hub / github.com/arq5x/bedtools2 / MakeFixedCountWindow

Method MakeFixedCountWindow

src/windowMaker/windowMaker.cpp:103–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

101}
102
103void 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
145string WindowMaker::GenerateID(const BED& interval, uint32_t window_index, uint32_t num_windows, bool _reverse) const {
146 stringstream s;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected