filter_options.h
Go to the documentation of this file.
1 
8 #pragma once
9 
10 #ifdef _MSC_VER
11 #pragma warning(disable:4290)// MSVC warns that it ignores the exception specification.
12 #endif
20 #include "interop/model/run/info.h"
21 
22 
23 namespace illumina { namespace interop { namespace model { namespace plot
24 {
25 
29  {
30  public:
34  typedef ::int16_t channel_t;
37 
38  public:
40  enum UseAll
41  {
43  ALL_IDS = 0,
47  ALL_BASES = -1
48  };
49 
50  public:
66  const id_t lane = ALL_IDS,
67  const channel_t channel = ALL_CHANNELS,// Order based on RunInfo.xml
68  const dna_base_t base = static_cast<dna_base_t>(ALL_BASES),
69  const id_t surface = ALL_IDS,
70  const id_t read = ALL_IDS,
71  const id_t cycle = ALL_IDS,
72  const id_t tile_number = ALL_IDS,
73  const id_t swath = ALL_IDS,
74  const id_t section = ALL_IDS,
75  const size_t subsample=0) :
76  m_lane(lane),
77  m_channel(channel),
78  m_base(base),
79  m_surface(surface),
80  m_read(read),
81  m_cycle(cycle),
82  m_tile_number(tile_number),
83  m_swath(swath),
84  m_section(section),
85  m_naming_method(naming_method),
86  m_subsample(subsample)
87  { }
88 
89  public:
92  void reset()
93  {
94  m_lane = ALL_IDS;
95  m_channel = ALL_CHANNELS;
96  m_base = static_cast<dna_base_t>(ALL_BASES);
97  m_surface = ALL_IDS;
98  m_read = ALL_IDS;
99  m_cycle = ALL_IDS;
100  m_tile_number = ALL_IDS;
101  m_swath = ALL_IDS;
102  m_section = ALL_IDS;
103  }
104 
105  public:
109  const run::info& run_info,
110  const bool check_ignored=false)const INTEROP_THROW_SPEC((model::invalid_filter_option))
111  {
112  if(m_naming_method == constants::UnknownTileNamingMethod)
113  INTEROP_THROW(model::invalid_filter_option, "Invalid tile naming method: Unknown");
115  "Invalid tile naming method: exceeds total number");
116 
117  if(m_naming_method != run_info.flowcell().naming_method())
118  INTEROP_THROW(model::invalid_filter_option, "Invalid tile naming method: does not match RunInfo.xml: "
119  << constants::to_string(m_naming_method) << " != "
120  << constants::to_string(run_info.flowcell().naming_method()) );
121 
122  if(!all_lanes() && m_lane > run_info.flowcell().lane_count())
124  "Lane number exceeds total number of lanes: "
125  << m_lane << " > " << run_info.flowcell().lane_count());
126  if(is_specific_surface() && m_surface > run_info.flowcell().surface_count())
128  "Surface number exceeds total number of surfaces: "
129  << m_surface << " > " << run_info.flowcell().surface_count());
130  if(!all_tile_numbers() && m_tile_number > run_info.flowcell().tile_count())
132  "Tile number exceeds total number of tile numbers: "
133  << m_tile_number << " > " << run_info.flowcell().tile_count());
134  if(!all_swaths() && m_swath > run_info.flowcell().swath_count())
136  "Swath number exceeds total number of swaths: "
137  << m_swath << " > " << run_info.flowcell().swath_count());
138  if(!all_sections() && m_section > run_info.flowcell().total_number_of_sections())
140  "Section number exceeds total number of sections: "
141  << m_section << " > " << run_info.flowcell().total_number_of_sections());
143  {
144  if(!all_bases() && (m_base >= static_cast<dna_base_t>(constants::NUM_OF_BASES) || m_base < 0))
145  INTEROP_THROW(model::invalid_filter_option, "Base to filter is invalid: " << to_string(m_base));
146  }
148  {
149  if(!all_cycles() && m_cycle > run_info.total_cycles())
151  "Cycle number exceeds total number of cycles: "
152  << m_cycle << " > " << run_info.total_cycles()
153  << " reads: " << run_info.reads().size());
154  }
156  {
157  if(!all_reads() && m_read > run_info.reads().size())
159  "Read number exceeds total number of reads: "
160  << m_read << " > " << run_info.reads().size());
161  }
163  {
164  if(!all_channels() && static_cast<size_t>(m_channel) >= run_info.channels().size())
166  "Channel number exceeds total number of channels: "
167  << m_channel << " > " << run_info.channels().size());
168  }
169  if(!check_ignored) return;
170  if(!logic::utils::is_base_metric(type) && !all_bases())
172  "Invalid filter option base for metric " << constants::to_string(type));
175  "Invalid filter option cycle for metric " << constants::to_string(type));
176  if(!logic::utils::is_read_metric(type) && !all_reads())
178  "Invalid filter option read for metric " << constants::to_string(type));
181  "Invalid filter option channel for metric " << constants::to_string(type));
182  //all_cycles
183  }
189  template<class Metric>
190  bool valid_tile(const Metric &metric) const
191  {
192  return valid_lane(metric.lane()) &&
193  valid_surface(metric.surface(m_naming_method)) &&
194  valid_tile_number(metric.number(m_naming_method)) &&
195  valid_swath(metric.swath(m_naming_method)) &&
196  valid_section(metric.section(m_naming_method));
197  }
198 
204  template<class Metric>
205  bool valid_tile_cycle(const Metric &metric) const
206  {
207  typedef typename Metric::base_t base_t;
208  return valid_tile(metric) && valid_cycle(metric, base_t::null());
209  }
210 
216  template<class Metric>
217  bool valid_read(const Metric &metric) const
218  {
219  typedef typename Metric::base_t base_t;
220  return valid_read(metric, base_t::null());
221  }
222 
228  bool all_channels(const constants::metric_type type) const
229  {
231  }
232 
237  bool all_channels() const
238  {
239  return m_channel == static_cast<channel_t>(ALL_CHANNELS);
240  }
241 
247  bool all_bases(const constants::metric_type type) const
248  {
249  return all_bases() && logic::utils::is_base_metric(type);
250  }
255  bool all_bases() const
256  {
257  return m_base == static_cast<dna_base_t>(ALL_BASES);
258  }
259 
264  bool all_reads() const
265  {
266  return m_read == static_cast<id_t>(ALL_IDS);
267  }
268 
273  bool all_cycles() const
274  {
275  return m_cycle == static_cast<id_t>(ALL_IDS);
276  }
281  bool all_lanes() const
282  {
283  return m_lane == static_cast<id_t>(ALL_IDS);
284  }
289  bool all_tile_numbers() const
290  {
291  return m_tile_number == static_cast<id_t>(ALL_IDS);
292  }
297  bool all_swaths() const
298  {
299  return m_swath == static_cast<id_t>(ALL_IDS);
300  }
305  bool all_sections() const
306  {
307  return m_section == static_cast<id_t>(ALL_IDS);
308  }
315  {
316  return m_read != static_cast<id_t>(ALL_IDS) && logic::utils::is_read_metric(type);
317  }
318 
323  bool is_specific_read() const
324  {
325  return m_read != static_cast<id_t>(ALL_IDS);
326  }
327 
332  bool is_specific_surface() const
333  {
334  return m_surface != static_cast<id_t>(ALL_IDS);
335  }
336 
341  bool valid_lane(const id_t lane) const
342  {
343  return m_lane == static_cast<id_t>(ALL_IDS) || m_lane == lane;
344  }
345 
350  bool valid_surface(const id_t surface) const
351  {
352  return m_surface == static_cast<id_t>(ALL_IDS) || m_surface == surface;
353  }
354 
359  bool valid_read(const id_t read) const
360  {
361  return m_read == static_cast<id_t>(ALL_IDS) || m_read == read;
362  }
363 
368  bool valid_cycle(const id_t cycle) const
369  {
370  return m_cycle == static_cast<id_t>(ALL_IDS) || m_cycle == cycle;
371  }
372 
377  bool valid_tile_number(const id_t tile_number) const
378  {
379  return m_tile_number == static_cast<id_t>(ALL_IDS) || m_tile_number == tile_number;
380  }
381 
386  bool valid_swath(const id_t swath) const
387  {
388  return m_swath == static_cast<id_t>(ALL_IDS) || m_swath == swath;
389  }
390 
395  bool valid_section(const id_t section) const
396  {
397  return m_section == static_cast<id_t>(ALL_IDS) || m_section == section;
398  }
399 
404  bool valid_channel(const channel_t channel) const
405  {
406  return m_channel == static_cast<channel_t>(ALL_CHANNELS) || m_channel == channel;
407  }
408 
413  bool valid_base(const dna_base_t base) const
414  {
415  return m_base == static_cast<dna_base_t>(ALL_BASES) || m_base == base;
416  }
417 
418  public:
431  void subsample(const size_t count)
432  {
433  m_subsample = count;
434  }
440  {
441  m_naming_method = naming_method;
442  }
447  void channel(const channel_t channel)
448  {
449  m_channel = channel;
450  }
451 
456  void dna_base(const dna_base_t base)
457  {
458  m_base = base;
459  }
460 
465  void read(const id_t r)
466  {
467  m_read = r;
468  }
469 
474  void cycle(const id_t c)
475  {
476  m_cycle = c;
477  }
478 
483  void surface(const id_t s)
484  {
485  m_surface = s;
486  }
491  void swath(const id_t s)
492  {
493  m_swath = s;
494  }
499  void section(const id_t s)
500  {
501  m_section = s;
502  }
507  void tile_number(const id_t s)
508  {
509  m_tile_number = s;
510  }
511 
516  void lane(const id_t l)
517  {
518  m_lane = l;
519  }
522  public:
527  id_t lane()const
528  {
529  return m_lane;
530  }
535  channel_t channel() const
536  {
537  return m_channel;
538  }
539 
544  dna_base_t dna_base() const
545  {
546  return m_base;
547  }
548 
553  id_t read() const
554  {
555  return m_read;
556  }
557 
562  id_t cycle() const
563  {
564  return m_cycle;
565  }
566 
571  id_t surface() const
572  {
573  return m_surface;
574  }
575 
580  std::string cycle_description() const
581  {
582  return all_cycles() ? "All Cycles" : "Cycle " + util::lexical_cast<std::string>(m_cycle);
583  }
584 
589  std::string lane_description() const
590  {
591  return all_lanes() ? "All Lanes" : "Lane " + util::lexical_cast<std::string>(m_lane);
592  }
593 
598  std::string channel_description(const std::vector<std::string> &channels) const
599  {
600  return all_channels() ? "All Channels" : channels[m_channel] +
601  " Channel";
602  }
603 
608  std::string base_description() const
609  {
610  return all_bases() ? "All Bases" : "Base " +
611  constants::to_string(m_base);
612  }
613 
618  std::string surface_description() const
619  {
620  return !is_specific_surface() ? "All Surfaces" :
621  constants::to_string(static_cast<constants::surface_type >(m_surface)) + " Surface";
622  }
623 
628  std::string read_description() const
629  {
630  return all_reads() ? "All Reads" : "Read " + util::lexical_cast<std::string>(m_read);
631  }
637  {
638  return m_naming_method;
639  }
640 
641  public:
655  const constants::plot_types plot_type,
656  const bool keep_state=false)
657  {
658  const id_t lane_beg = !supports_lane(plot_type) || supports_all_lanes(plot_type) ?
659  static_cast<id_t>(ALL_IDS) : 1;
660  const id_t lane_end = !supports_lane(plot_type) ?
661  static_cast<id_t>(ALL_IDS) : static_cast<id_t>(info.flowcell().lane_count()+1);
662  const channel_t channel_beg = !supports_channel(metric_type) || supports_all_channels(plot_type) ?
663  static_cast<channel_t>(ALL_CHANNELS) : 0;
664  const channel_t channel_end = !supports_channel(metric_type) ?
665  static_cast<channel_t>(ALL_CHANNELS) :
666  static_cast<channel_t>(info.channels().size());
667  const dna_base_t base_beg = !supports_base(metric_type) || supports_all_bases(plot_type) ?
668  static_cast<dna_base_t>(ALL_BASES) : constants::A;
669  const dna_base_t base_end = !supports_base(metric_type) ?
670  static_cast<dna_base_t>(ALL_BASES) : constants::NUM_OF_BASES;
671  const id_t surface_beg = static_cast<id_t>(ALL_IDS); // All surfaces is always supported
672  const id_t surface_end = !supports_surface(metric_type, info) ?
673  static_cast<id_t>(ALL_IDS) : info.flowcell().surface_count()+1;
674  const id_t read_beg = !supports_read(metric_type, plot_type) || supports_all_reads(plot_type) ?
675  static_cast<id_t>(ALL_IDS) : 1;
676  const id_t read_end = !supports_read(metric_type, plot_type) ?
677  static_cast<id_t>(ALL_IDS) : static_cast<id_t>(info.reads().size()+1);
678  const id_t cycle_beg = !supports_cycle(metric_type, plot_type) || supports_all_cycles(plot_type) ?
679  static_cast<id_t>(ALL_IDS) : 1u;
680  const id_t cycle_end = !supports_cycle(metric_type, plot_type) ?
681  static_cast<id_t>(ALL_IDS) : static_cast<id_t>(info.total_cycles()+1);
682  const id_t swath_beg = static_cast<id_t>(ALL_IDS);
683  const id_t swath_end = !supports_swath(plot_type) ? static_cast<id_t>(ALL_IDS) :
684  static_cast<id_t>(info.flowcell().swath_count()+1);
685  const id_t section_beg = static_cast<id_t>(ALL_IDS);
686  const id_t section_end = !supports_section(plot_type, info) ? static_cast<id_t>(ALL_IDS) :
687  static_cast<id_t>(info.flowcell().total_number_of_sections()+1);
688  const id_t tile_beg = static_cast<id_t>(ALL_IDS);
689  const id_t tile_end = !supports_tile(plot_type) ? static_cast<id_t>(ALL_IDS) :
690  static_cast<id_t>(info.flowcell().tile_count()+1);
691  util::abstract_range_iterator* iterators[] =
692  {
693  new util::indirect_range_iterator<id_t>(m_lane, lane_beg, lane_end, !keep_state),
694  new util::indirect_range_iterator<channel_t>(m_channel, channel_beg, channel_end, !keep_state),
695  new util::indirect_range_iterator<dna_base_t, int>(m_base, base_beg, base_end, !keep_state),
696  new util::indirect_range_iterator<id_t>(m_surface, surface_beg, surface_end, !keep_state),
697  new util::indirect_range_iterator<id_t>(m_read, read_beg, read_end, !keep_state),
698  new util::indirect_range_iterator<id_t>(m_cycle, cycle_beg, cycle_end, !keep_state),
699  new util::indirect_range_iterator<id_t>(m_swath, swath_beg, swath_end, !keep_state),
700  new util::indirect_range_iterator<id_t>(m_section, section_beg, section_end, !keep_state),
701  new util::indirect_range_iterator<id_t>(m_tile_number, tile_beg, tile_end, !keep_state)
702  };
703  return util::chain_range_iterator(iterators);
704  }
705 
706  public:
707 
714  bool supports_section(const constants::plot_types /*plot_type*/, const model::run::info& info)const
715  {
716  if(info.flowcell().naming_method() != constants::FiveDigit) return false;
717  return false;
718  }
724  bool supports_swath(const constants::plot_types /*plot_type*/)const
725  {
726  return false;
727  }
733  bool supports_tile(const constants::plot_types /*plot_type*/)const
734  {
735  return false;
736  }
742  bool supports_all_lanes(const constants::plot_types plot_type)const
743  {
744  return plot_type != constants::SampleQCPlot;
745  }
751  bool supports_lane(const constants::plot_types plot_type)const
752  {
753  return plot_type != constants::FlowcellPlot &&
754  plot_type != constants::ByLanePlot;
755  }
761  bool supports_all_bases(const constants::plot_types plot_type)const
762  {
763  return plot_type == constants::ByCyclePlot;
764  }
770  bool supports_base(const constants::metric_type metric_type)const
771  {
772  return logic::utils::is_base_metric(metric_type);
773  }
779  bool supports_all_channels(const constants::plot_types plot_type)const
780  {
781  return plot_type == constants::ByCyclePlot;
782  }
788  bool supports_channel(const constants::metric_type metric_type)const
789  {
790  return logic::utils::is_channel_metric(metric_type);
791  }
797  bool supports_all_cycles(const constants::plot_types plot_type)const
798  {
799  return plot_type == constants::QHistogramPlot;
800  }
807  bool supports_cycle(const constants::metric_type metric_type, const constants::plot_types plot_type)const
808  {
809  return logic::utils::is_cycle_metric(metric_type) &&
810  plot_type != constants::ByCyclePlot &&
811  plot_type != constants::QHeatmapPlot;
812  }
818  bool supports_all_reads(const constants::plot_types plot_type)const
819  {
820  return plot_type == constants::QHistogramPlot;
821  }
828  bool supports_read(const constants::metric_type metric_type, const constants::plot_types plot_type)const
829  {
830  return logic::utils::is_read_metric(metric_type) || plot_type == constants::QHistogramPlot;
831  }
838  bool supports_surface(const constants::metric_type metric_type, const model::run::info& info)const
839  {
840  if(metric_type == constants::UnknownMetricType) return false;
841  const size_t surface_count = info.flowcell().surface_count();
842  return surface_count > 1;
843  }
848  size_t subsample()const
849  {
850  return m_subsample;
851  }
852 
853  private:
854  template<class Metric>
855  bool valid_cycle(const Metric &metric, const constants::base_cycle_t*) const
856  {
857  return m_cycle == static_cast<id_t>(ALL_IDS) || metric.cycle() == m_cycle;
858  }
859 
860  template<class Metric>
861  bool valid_cycle(const Metric &, const void*) const
862  { return true; }
863 
864  template<class Metric>
865  bool valid_read(const Metric &metric, const constants::base_read_t*) const
866  { return m_read == static_cast<id_t>(ALL_IDS) || metric.read() == m_read; }
867 
868  template<class Metric>
869  bool valid_read(const Metric &, const void*) const
870  { return true; }
871 
872  friend std::ostream& operator <<(std::ostream& out, const filter_options& options)
873  {
874  out << "Selected_filters_";
875  if(!options.all_lanes()) out << "Lane_" << options.m_lane << "_";
876  if(!options.all_channels()) out << "Channel_" << options.m_channel << "_";
877  if(!options.all_bases()) out << "Base_" << options.m_base << "_";
878  if(options.is_specific_surface()) out << "Surface_" << options.m_surface << "_";
879  if(!options.all_reads()) out << "Read_" << options.m_read << "_";
880  if(!options.all_cycles()) out << "Cycle_" << options.m_cycle << "_";
881  if(!options.all_swaths()) out << "Swath_" << options.m_swath << "_";
882  if(!options.all_sections()) out << "Section_" << options.m_section << "_";
883  if(!options.all_tile_numbers()) out << "Tile_" << options.m_tile_number << "_";
884  out << "_";
885  return out;
886  }
887 
888 
889  private:
890  id_t m_lane;
891  channel_t m_channel;
892  dna_base_t m_base;
893  id_t m_surface;
894  id_t m_read;
895  id_t m_cycle;
896  id_t m_tile_number;
897  id_t m_swath;
898  id_t m_section;
899  constants::tile_naming_method m_naming_method;
900  size_t m_subsample;
901 
902  };
903 
904 
905 }}}}
906 
id_t read() const
Definition: filter_options.h:553
bool supports_all_bases(const constants::plot_types plot_type) const
Definition: filter_options.h:761
Definition: indirect_range_iterator.h:170
bool supports_section(const constants::plot_types, const model::run::info &info) const
Definition: filter_options.h:714
::uint32_t uint_t
Definition: base_metric.h:144
Definition: indirect_range_iterator.h:15
Definition: filter_options.h:28
bool supports_swath(const constants::plot_types) const
Definition: filter_options.h:724
bool valid_tile(const Metric &metric) const
Definition: filter_options.h:190
bool is_specific_read() const
Definition: filter_options.h:323
metric_type
Definition: enums.h:284
Definition: enum_description.h:15
bool valid_read(const id_t read) const
Definition: filter_options.h:359
bool supports_all_lanes(const constants::plot_types plot_type) const
Definition: filter_options.h:742
#define INTEROP_RANGE_CHECK(VALUE, RANGE, EXCEPTION, MESSAGE)
Definition: exception.h:31
void surface(const id_t s)
Definition: filter_options.h:483
std::string cycle_description() const
Definition: filter_options.h:580
bool all_cycles() const
Definition: filter_options.h:273
std::string base_description() const
Definition: filter_options.h:608
void dna_base(const dna_base_t base)
Definition: filter_options.h:456
tile_naming_method_t naming_method() const
Definition: flowcell_layout.h:150
#define INTEROP_THROW_SPEC(SPEC)
Definition: exception_specification.h:15
void validate(const constants::metric_type type, const run::info &run_info, const bool check_ignored=false) const INTEROP_THROW_SPEC((model
Definition: filter_options.h:108
std::string to_string(const std::vector< T > &values)
Definition: imaging_table_regression_test.cpp:32
bool supports_cycle(const constants::metric_type metric_type, const constants::plot_types plot_type) const
Definition: filter_options.h:807
uint_t total_number_of_sections() const
Definition: flowcell_layout.h:139
Definition: enums.h:301
bool all_swaths() const
Definition: filter_options.h:297
Definition: indirect_range_iterator.h:62
#define INTEROP_THROW(EXCEPTION, MESSAGE)
Definition: exception.h:18
uint_t swath_count() const
Definition: flowcell_layout.h:109
bool supports_lane(const constants::plot_types plot_type) const
Definition: filter_options.h:751
filter_options(const constants::tile_naming_method naming_method, const id_t lane=ALL_IDS, const channel_t channel=ALL_CHANNELS, const dna_base_t base=static_cast< dna_base_t >(ALL_BASES), const id_t surface=ALL_IDS, const id_t read=ALL_IDS, const id_t cycle=ALL_IDS, const id_t tile_number=ALL_IDS, const id_t swath=ALL_IDS, const id_t section=ALL_IDS, const size_t subsample=0)
Definition: filter_options.h:65
void section(const id_t s)
Definition: filter_options.h:499
channel_t channel() const
Definition: filter_options.h:535
bool supports_surface(const constants::metric_type metric_type, const model::run::info &info) const
Definition: filter_options.h:838
void subsample(const size_t count)
Definition: filter_options.h:431
plot_types
Definition: enums.h:339
friend std::ostream & operator<<(std::ostream &out, const filter_options &options)
Definition: filter_options.h:872
UseAll
Definition: filter_options.h:40
id_t cycle() const
Definition: filter_options.h:562
bool valid_tile_number(const id_t tile_number) const
Definition: filter_options.h:377
bool all_bases() const
Definition: filter_options.h:255
id_t lane() const
Definition: filter_options.h:527
Definition: plot_exceptions.h:26
bool all_channels(const constants::metric_type type) const
Definition: filter_options.h:228
bool valid_tile_cycle(const Metric &metric) const
Definition: filter_options.h:205
bool all_bases(const constants::metric_type type) const
Definition: filter_options.h:247
size_t subsample() const
Definition: filter_options.h:848
bool is_specific_surface() const
Definition: filter_options.h:332
bool valid_base(const dna_base_t base) const
Definition: filter_options.h:413
bool valid_read(const Metric &metric) const
Definition: filter_options.h:217
void swath(const id_t s)
Definition: filter_options.h:491
bool valid_swath(const id_t swath) const
Definition: filter_options.h:386
bool supports_tile(const constants::plot_types) const
Definition: filter_options.h:733
bool all_reads() const
Definition: filter_options.h:264
uint_t surface_count() const
Definition: flowcell_layout.h:82
bool all_channels() const
Definition: filter_options.h:237
bool supports_all_reads(const constants::plot_types plot_type) const
Definition: filter_options.h:818
bool is_read_metric(const constants::metric_type type)
Definition: metric_type_ext.h:135
const read_vector_t & reads() const
Definition: info.h:235
Definition: type_traits.h:131
bool supports_all_channels(const constants::plot_types plot_type) const
Definition: filter_options.h:779
util::chain_range_iterator option_iterator(const model::run::info &info, const constants::metric_type metric_type, const constants::plot_types plot_type, const bool keep_state=false)
Definition: filter_options.h:653
const flowcell_layout & flowcell() const
Definition: info.h:214
bool supports_all_cycles(const constants::plot_types plot_type) const
Definition: filter_options.h:797
void tile_number(const id_t s)
Definition: filter_options.h:507
bool valid_lane(const id_t lane) const
Definition: filter_options.h:341
dna_base_t dna_base() const
Definition: filter_options.h:544
bool all_lanes() const
Definition: filter_options.h:281
std::string surface_description() const
Definition: filter_options.h:618
bool all_sections() const
Definition: filter_options.h:305
size_t total_cycles() const
Definition: info.h:334
bool is_channel_metric(const constants::metric_type type)
Definition: metric_type_ext.h:125
void channel(const channel_t channel)
Definition: filter_options.h:447
std::string channel_description(const std::vector< std::string > &channels) const
Definition: filter_options.h:598
void cycle(const id_t c)
Definition: filter_options.h:474
std::string lane_description() const
Definition: filter_options.h:589
bool valid_section(const id_t section) const
Definition: filter_options.h:395
bool valid_surface(const id_t surface) const
Definition: filter_options.h:350
bool is_cycle_metric(const constants::metric_type type)
Definition: metric_type_ext.h:145
bool supports_base(const constants::metric_type metric_type) const
Definition: filter_options.h:770
model::metric_base::base_metric::uint_t id_t
Definition: filter_options.h:36
::int16_t channel_t
Definition: filter_options.h:34
void read(const id_t r)
Definition: filter_options.h:465
bool supports_channel(const constants::metric_type metric_type) const
Definition: filter_options.h:788
bool all_tile_numbers() const
Definition: filter_options.h:289
constants::dna_bases dna_base_t
Definition: filter_options.h:32
constants::tile_naming_method naming_method() const
Definition: filter_options.h:636
bool valid_channel(const channel_t channel) const
Definition: filter_options.h:404
void lane(const id_t l)
Definition: filter_options.h:516
bool is_base_metric(const constants::metric_type type)
Definition: metric_type_ext.h:115
uint_t tile_count() const
Definition: flowcell_layout.h:116
tile_naming_method
Definition: enums.h:294
dna_bases
Definition: enums.h:299
uint_t lane_count() const
Definition: flowcell_layout.h:75
void reset()
Definition: filter_options.h:92
bool supports_read(const constants::metric_type metric_type, const constants::plot_types plot_type) const
Definition: filter_options.h:828
Destination lexical_cast(const Source &src)
Definition: lexical_cast.h:264
std::string to_string(Enum value)
Definition: enums.h:43
bool valid_cycle(const id_t cycle) const
Definition: filter_options.h:368
void tile_naming_method(const constants::tile_naming_method naming_method)
Definition: filter_options.h:439
const str_vector_t & channels() const
Definition: info.h:221
bool is_specific_read(const constants::metric_type type) const
Definition: filter_options.h:314
id_t surface() const
Definition: filter_options.h:571
std::string read_description() const
Definition: filter_options.h:628