A library for working with phylogenetic and population genetic data.
v0.27.0
SimplePileupInputIterator< T > Class Template Reference

#include <genesis/population/formats/simple_pileup_input_iterator.hpp>

Detailed Description

template<class T = SimplePileupReader::Record>
class genesis::population::SimplePileupInputIterator< T >

Iterate an input source and parse it as a (m)pileup file.

This simple wrapper allows easy iteration through the records/lines of an (m)pileup file line by line. See SimplePileupReader for details. The class is templated, so that it can be either used to produce SimplePileupReader::Record or Variant objects per line of the input mpileup file.

Basic usage:

auto it = SimplePileupInputIterator<>( utils::from_file( infile ));
while( it ) {
    // work with it.record() or it->...
    ++it;
}

or

for( auto it = SimplePileupInputIterator<Variant>( utils::from_file( infile )); it; ++it ) {
    // work with it
}

both allow to iterate each line in the file. The first instanciates an iterator over SimplePileupReader::Record, while the second over Variant.

Additionally, filtering of which samples (by index) to include can be provided, either as a vector of indices to consider, or as a bool vector that is true at the indices to consider. The latter filter does not need to contain the same number of values as the record has samples. If it is shorter, all samples after its last index will be ignored. If it is longer, the remaining entries are not used as a filter.

Definition at line 79 of file simple_pileup_input_iterator.hpp.

Public Member Functions

 SimplePileupInputIterator ()=default
 Create a default instance, with no input. More...
 
 SimplePileupInputIterator (self_type &&)=default
 
 SimplePileupInputIterator (self_type const &)=default
 
 SimplePileupInputIterator (std::shared_ptr< utils::BaseInputSource > source, SimplePileupReader const &reader={})
 Create an instance that reads from an input source, and optionally take a SimplePileupReader with settings to be used. More...
 
 SimplePileupInputIterator (std::shared_ptr< utils::BaseInputSource > source, std::vector< bool > const &sample_filter, SimplePileupReader const &reader={})
 Create an instance that reads from an input source, using only the samples at the indices where the sample_filter is true, and optionally take a SimplePileupReader with settings to be used. More...
 
 ~SimplePileupInputIterator ()=default
 
bool good () const
 
void increment ()
 
 operator bool () const
 Return true iff dereferencing is valid, i.e., iff there is a line/record available. More...
 
bool operator!= (self_type const &it) const
 
T & operator* ()
 
T const & operator* () const
 
self_typeoperator++ ()
 
self_typeoperator++ (int)
 
T * operator-> ()
 
T const * operator-> () const
 
self_typeoperator= (self_type &&)=default
 
self_typeoperator= (self_type const &)=default
 
bool operator== (self_type const &it) const
 
T & record ()
 
T const & record () const
 

Public Types

using const_reference = value_type const &
 
using difference_type = std::ptrdiff_t
 
using iterator_category = std::input_iterator_tag
 
using pointer = value_type *
 
using reference = value_type &
 
using self_type = SimplePileupInputIterator
 
using value_type = T
 

Constructor & Destructor Documentation

◆ SimplePileupInputIterator() [1/5]

Create a default instance, with no input.

◆ SimplePileupInputIterator() [2/5]

SimplePileupInputIterator ( std::shared_ptr< utils::BaseInputSource source,
SimplePileupReader const &  reader = {} 
)
inlineexplicit

Create an instance that reads from an input source, and optionally take a SimplePileupReader with settings to be used.

Definition at line 108 of file simple_pileup_input_iterator.hpp.

◆ SimplePileupInputIterator() [3/5]

SimplePileupInputIterator ( std::shared_ptr< utils::BaseInputSource source,
std::vector< bool > const &  sample_filter,
SimplePileupReader const &  reader = {} 
)
inline

Create an instance that reads from an input source, using only the samples at the indices where the sample_filter is true, and optionally take a SimplePileupReader with settings to be used.

Definition at line 145 of file simple_pileup_input_iterator.hpp.

◆ ~SimplePileupInputIterator()

◆ SimplePileupInputIterator() [4/5]

SimplePileupInputIterator ( self_type const &  )
default

◆ SimplePileupInputIterator() [5/5]

Member Function Documentation

◆ good()

bool good ( ) const
inline

Definition at line 179 of file simple_pileup_input_iterator.hpp.

◆ increment()

void increment ( )
inline

Definition at line 234 of file simple_pileup_input_iterator.hpp.

◆ operator bool()

operator bool ( ) const
inlineexplicit

Return true iff dereferencing is valid, i.e., iff there is a line/record available.

Definition at line 174 of file simple_pileup_input_iterator.hpp.

◆ operator!=()

bool operator!= ( self_type const &  it) const
inline

Definition at line 244 of file simple_pileup_input_iterator.hpp.

◆ operator*() [1/2]

T& operator* ( )
inline

Definition at line 213 of file simple_pileup_input_iterator.hpp.

◆ operator*() [2/2]

T const& operator* ( ) const
inline

Definition at line 208 of file simple_pileup_input_iterator.hpp.

◆ operator++() [1/2]

self_type& operator++ ( )
inline

Definition at line 222 of file simple_pileup_input_iterator.hpp.

◆ operator++() [2/2]

self_type& operator++ ( int  )
inline

Definition at line 228 of file simple_pileup_input_iterator.hpp.

◆ operator->() [1/2]

T* operator-> ( )
inline

Definition at line 203 of file simple_pileup_input_iterator.hpp.

◆ operator->() [2/2]

T const* operator-> ( ) const
inline

Definition at line 198 of file simple_pileup_input_iterator.hpp.

◆ operator=() [1/2]

self_type& operator= ( self_type &&  )
default

◆ operator=() [2/2]

self_type& operator= ( self_type const &  )
default

◆ operator==()

bool operator== ( self_type const &  it) const
inline

Definition at line 239 of file simple_pileup_input_iterator.hpp.

◆ record() [1/2]

T& record ( )
inline

Definition at line 193 of file simple_pileup_input_iterator.hpp.

◆ record() [2/2]

T const& record ( ) const
inline

Definition at line 188 of file simple_pileup_input_iterator.hpp.

Member Typedef Documentation

◆ const_reference

using const_reference = value_type const&

Definition at line 91 of file simple_pileup_input_iterator.hpp.

◆ difference_type

using difference_type = std::ptrdiff_t

Definition at line 92 of file simple_pileup_input_iterator.hpp.

◆ iterator_category

using iterator_category = std::input_iterator_tag

Definition at line 93 of file simple_pileup_input_iterator.hpp.

◆ pointer

using pointer = value_type*

Definition at line 89 of file simple_pileup_input_iterator.hpp.

◆ reference

Definition at line 90 of file simple_pileup_input_iterator.hpp.

◆ self_type

◆ value_type

using value_type = T

Definition at line 88 of file simple_pileup_input_iterator.hpp.


The documentation for this class was generated from the following file: