24 #ifndef __POLY_TABLE_SLICE_HPP__ 25 #define __POLY_TABLE_SLICE_HPP__ 28 #include <type_traits> 121 typedef std::pair<PolyTable::const_site_iterator,
122 PolyTable::const_site_iterator>
range;
124 static_assert( std::is_base_of<Sequence::PolyTable,T>::value,
125 "T must be derived from Sequence::PolyTable" );
128 std::vector< range > windows;
129 void process_windows(
const PolyTable::const_site_iterator beg,
130 const PolyTable::const_site_iterator end,
131 const double & window_size,
132 const double & step_len,
133 const double & starting_pos,
134 const double & ending_pos);
136 void process_windows_fixed(
const PolyTable::const_site_iterator beg,
137 const PolyTable::const_site_iterator end,
138 const unsigned & window_size_S,
139 const unsigned & window_step_len );
157 explicit PolyTableSlice(
const PolyTable::const_site_iterator beg,
158 const PolyTable::const_site_iterator end,
159 const unsigned & window_size_S,
160 const unsigned & window_step_len );
172 explicit PolyTableSlice(
const PolyTable::const_site_iterator beg,
173 const PolyTable::const_site_iterator end,
174 const unsigned nwindows);
200 explicit PolyTableSlice(
const PolyTable::const_site_iterator beg,
201 const PolyTable::const_site_iterator end,
202 const double & window_size,
203 const double & step_len,
204 const double & starting_pos = 0.,
205 const double & ending_pos = 1.0);
213 const_iterator
cbegin()
const;
217 const_iterator
cend()
const;
223 T
get_slice(
const const_iterator)
const ;
227 std::vector<range>::size_type
size()
const;
236 #include <Sequence/bits/PolyTableSlice.tcc> std::pair< PolyTable::const_site_iterator, PolyTable::const_site_iterator > range
Range of a window = [first,second)
T get_slice(const const_iterator) const
The namespace in which this library resides.
const_iterator cend() const
std::vector< range >::size_type size() const
A container class for "sliding windows" along a polymorphism table.
T operator[](const unsigned &) const
std::vector< range >::const_iterator const_iterator
PolyTableSlice(const PolyTable::const_site_iterator beg, const PolyTable::const_site_iterator end, const unsigned &window_size_S, const unsigned &window_step_len)
const_iterator cbegin() const