| OpenMS 2.5.0

Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
FuzzyStringComparator Class Reference

Fuzzy comparison of strings, tolerates numeric differences. More...

`#include <OpenMS/CONCEPT/FuzzyStringComparator.h>`

## Classes

struct | AbortComparison
| Internal exception class. More...
struct | InputLine
| Stores information about the current input line (i.e., stream for the line and the current position in the stream) More...
struct | PrefixInfo_
| Wrapper for the prefix information computed for the failure report. More...
struct | StreamElement_
| Stores information about characters, numbers, and white spaces loaded from the InputStream. More...

## Public Member Functions

const double & | getAcceptableRelative () const
| Acceptable relative error (a number >= 1.0) More...
void | setAcceptableRelative (const double rhs)
| Acceptable relative error (a number >= 1.0) More...
const double & | getAcceptableAbsolute () const
| Acceptable absolute difference (a number >= 0.0) More...
void | setAcceptableAbsolute (const double rhs)
| Acceptable absolute difference (a number >= 0.0) More...
const StringList & | getWhitelist () const
| White list. If both lines contain the same element from this list, they are skipped over. More...
StringList & | getWhitelist ()
| White list. If both lines contain the same element from this list, they are skipped over. More...
void | setWhitelist (const StringList &rhs)
| White list. If both lines contain the same element from this list, they are skipped over. More...
void | setMatchedWhitelist (const std::vector< std::pair< std::string, std::string > > &rhs)
| Matched white list. If file 1 contains element 1 and file 2 contains element 2, they are skipped over. More...
const std::vector< std::pair< std::string, std::string > > & | getMatchedWhitelist () const
| Matched white list. If file 1 contains element 1 and file 2 contains element 2, they are skipped over. More...
const int & | getVerboseLevel () const
| verbose level More...
void | setVerboseLevel (const int rhs)
| verbose level More...
const int & | getTabWidth () const
| get tab width (for column numbers) More...
void | setTabWidth (const int rhs)
| set tab width (for column numbers) More...
const int & | getFirstColumn () const
| get first column (for column numbers) More...
void | setFirstColumn (const int rhs)
| set first column (for column numbers) More...
std::ostream & | getLogDestination () const
| Log output is written to this destination. More...
void | setLogDestination (std::ostream &rhs)
| Log output is written to this destination. More...
bool | compareStrings (std::string const &lhs, std::string const &rhs)
| Compare two strings. More...
bool | compareStreams (std::istream &input_1, std::istream &input_2)
| Compare two streams of input. More...
bool | compareFiles (const std::string &filename_1, const std::string &filename_2)
| Simple diff-like application to compare two input files. Numeric differences are tolerated up to a certain ratio or absolute difference. More...
the fabulous four
| FuzzyStringComparator ()
| Constructor. More...
virtual | ~FuzzyStringComparator ()
| Destructor. More...
| FuzzyStringComparator (const FuzzyStringComparator &rhs)
| Copy constructor intentionally not implemented. More...
FuzzyStringComparator & | operator= (const FuzzyStringComparator &rhs)
| Assignment operator intentionally not implemented. More...

## Protected Member Functions

bool | compareLines_ (std::string const &line_str_1, std::string const &line_str_2)
| Compare two lines of input. More...
void | reportSuccess_ () const
| Report good news. More...
void | reportFailure_ (char const *const message) const
void | writeWhitelistCases_ (const std::string &prefix) const
| Write info about hits in the whitelist. More...
void | readNextLine_ (std::istream &input_stream, std::string &line_string, int &line_number) const
bool | openInputFileStream_ (const std::string &filename, std::ifstream &input_stream) const
| opens and checks an input file stream std::ifstream More...

## Protected Attributes

std::ostream * | log_dest_
| Log and results output goes here. More...
std::string | input_1_name_
| Name of first input e.g., filename. More...
std::string | input_2_name_
| Name of second input e.g., filename. More...
InputLine | input_line_1_
InputLine | input_line_2_
int | line_num_1_
int | line_num_2_
int | line_num_1_max_
int | line_num_2_max_
std::string | line_str_1_max_
std::string | line_str_2_max_
double | ratio_max_allowed_
| Maximum ratio of numbers allowed, see ratio_max_. More...
double | ratio_max_
| Maximum ratio of numbers observed so far, see ratio_max_allowed_. More...
double | absdiff_max_allowed_
| Maximum absolute difference of numbers allowed, see absdiff_max_. More...
double | absdiff_max_
| Maximum difference of numbers observed so far, see absdiff_max_allowed_. More...
StreamElement_ | element_1_
| Stores information about characters, numbers, and white spaces loaded from the first input stream. More...
StreamElement_ | element_2_
| Stores information about characters, numbers, and white spaces loaded from the second input stream. More...
bool | is_absdiff_small_
int | verbose_level_
int | tab_width_
int | first_column_
bool | is_status_success_
| Has comparison been successful so far? Note: this flag is changed in reportFailure_();. More...
bool | use_prefix_
| use a prefix when reporting More...
StringList | whitelist_
| Whitelist. More...
std::map< String, UInt > | whitelist_cases_
| Occurrences of whitelist entries. More...
std::vector< std::pair< std::string, std::string > > | matched_whitelist_
| Alternative Whitelist. More...

## Friends

void | Internal::ClassTest::testStringSimilar (const char *file, int line, const std::string &string_1, const char *string_1_stringified, const std::string &string_2, const char *string_2_stringified)
bool | Internal::ClassTest::isFileSimilar (const std::string &, const std::string &)

## Detailed Description

Fuzzy comparison of strings, tolerates numeric differences.

## Class Documentation

## ◆ OpenMS::FuzzyStringComparator::AbortComparison

struct OpenMS::FuzzyStringComparator::AbortComparison

Internal exception class.

## Constructor & Destructor Documentation

## ◆ FuzzyStringComparator() [1/2]

FuzzyStringComparator | ( |  | ) |

Constructor.

## ◆ ~FuzzyStringComparator()

virtual ~FuzzyStringComparator | ( |  | ) |

virtual

Destructor.

## ◆ FuzzyStringComparator() [2/2]

FuzzyStringComparator | ( | const FuzzyStringComparator & | rhs | ) |

Copy constructor intentionally not implemented.

## Member Function Documentation

## ◆ compareFiles()

bool compareFiles | ( | const std::string & | filename_1,
|  | const std::string & | filename_2
| ) |  |

Simple diff-like application to compare two input files. Numeric differences are tolerated up to a certain ratio or absolute difference.

where

Parameters

  filename_1 | first input file
  filename_2 | second input file

Returns
  true in case of no differences found

See also
  ratio_max_allowed_
  absdiff_max_allowed_
  verbose_level_

## ◆ compareLines_()

bool compareLines_ | ( | std::string const & | line_str_1,
|  | std::string const & | line_str_2
| ) |  |

protected

Compare two lines of input.

This implements the core functionality. Intended to be used for a single line of input.

Returns
  true (non-zero) in case of success

## ◆ compareStreams()

bool compareStreams | ( | std::istream & | input_1,
|  | std::istream & | input_2
| ) |  |

Compare two streams of input.

This compares all lines of the input. Intended to be used for file streams.

Returns
  true in case of no differences found

## ◆ compareStrings()

bool compareStrings | ( | std::string const & | lhs,
|  | std::string const & | rhs
| ) |  |

Compare two strings.

This compares all lines of the input.

Returns
  true in case of no differences found

## ◆ getAcceptableAbsolute()

const double& getAcceptableAbsolute | ( |  | ) | const

Acceptable absolute difference (a number >= 0.0)

## ◆ getAcceptableRelative()

const double& getAcceptableRelative | ( |  | ) | const

Acceptable relative error (a number >= 1.0)

## ◆ getFirstColumn()

const int& getFirstColumn | ( |  | ) | const

get first column (for column numbers)

## ◆ getLogDestination()

std::ostream& getLogDestination | ( |  | ) | const

Log output is written to this destination.

The default is std::cout. Use std::ostringstream etc. to save the output in a string.

## ◆ getMatchedWhitelist()

const std::vector< std::pair<std::string, std::string> >& getMatchedWhitelist | ( |  | ) | const

Matched white list. If file 1 contains element 1 and file 2 contains element 2, they are skipped over.

## ◆ getTabWidth()

const int& getTabWidth | ( |  | ) | const

get tab width (for column numbers)

## ◆ getVerboseLevel()

const int& getVerboseLevel | ( |  | ) | const

verbose level

- 0 = very quiet mode (absolutely no output)
- 1 = quiet mode (no output unless differences detected)
- 2 = default (include summary at end)
- 3 = continue after errors

## ◆ getWhitelist() [1/2]

const StringList& getWhitelist | ( |  | ) | const

White list. If both lines contain the same element from this list, they are skipped over.

## ◆ getWhitelist() [2/2]

StringList& getWhitelist | ( |  | ) |

White list. If both lines contain the same element from this list, they are skipped over.

## ◆ openInputFileStream_()

bool openInputFileStream_ | ( | const std::string & | filename,
|  | std::ifstream & | input_stream
| ) |  | const

protected

opens and checks an input file stream std::ifstream

## ◆ operator=()

FuzzyStringComparator& operator= | ( | const FuzzyStringComparator & | rhs | ) |

Assignment operator intentionally not implemented.

## ◆ readNextLine_()

void readNextLine_ | ( | std::istream & | input_stream,
|  | std::string & | line_string,
|  | int & | line_number
| ) |  | const

protected

read the next line in input stream, skipping over empty lines and lines consisting of whitespace only

## ◆ reportFailure_()

void reportFailure_ | ( | char const *const | message | ) | const

protected

Report bad news.

Exceptions

  AbortComparison |

## ◆ reportSuccess_()

void reportSuccess_ | ( |  | ) | const

protected

Report good news.

## ◆ setAcceptableAbsolute()

void setAcceptableAbsolute | ( | const double | rhs | ) |

Acceptable absolute difference (a number >= 0.0)

## ◆ setAcceptableRelative()

void setAcceptableRelative | ( | const double | rhs | ) |

Acceptable relative error (a number >= 1.0)

## ◆ setFirstColumn()

void setFirstColumn | ( | const int | rhs | ) |

set first column (for column numbers)

## ◆ setLogDestination()

void setLogDestination | ( | std::ostream & | rhs | ) |

Log output is written to this destination.

The default is std::cout. Use std::ostringstream etc. to save the output in a string.

There seems to be an issue with this under Windows, see comment in FuzzyStringComparator_test.cpp

## ◆ setMatchedWhitelist()

void setMatchedWhitelist | ( | const std::vector< std::pair< std::string, std::string > > & | rhs | ) |

Matched white list. If file 1 contains element 1 and file 2 contains element 2, they are skipped over.

## ◆ setTabWidth()

void setTabWidth | ( | const int | rhs | ) |

set tab width (for column numbers)

## ◆ setVerboseLevel()

void setVerboseLevel | ( | const int | rhs | ) |

verbose level

- 0 = very quiet mode (absolutely no output)
- 1 = quiet mode (no output unless differences detected)
- 2 = default (include summary at end)
- 3 = continue after errors

## ◆ setWhitelist()

void setWhitelist | ( | const StringList & | rhs | ) |

White list. If both lines contain the same element from this list, they are skipped over.

## ◆ writeWhitelistCases_()

void writeWhitelistCases_ | ( | const std::string & | prefix | ) | const

protected

Write info about hits in the whitelist.

## Friends And Related Function Documentation

## ◆ Internal::ClassTest::isFileSimilar

bool Internal::ClassTest::isFileSimilar | ( | const std::string & | ,
|  | const std::string & |
| ) |  |

friend

## ◆ Internal::ClassTest::testStringSimilar

void Internal::ClassTest::testStringSimilar | ( | const char * | file,
|  | int | line,
|  | const std::string & | string_1,
|  | const char * | string_1_stringified,
|  | const std::string & | string_2,
|  | const char * | string_2_stringified
| ) |  |

friend

## Member Data Documentation

## ◆ absdiff_max_

double absdiff_max_

protected

Maximum difference of numbers observed so far, see absdiff_max_allowed_.

## ◆ absdiff_max_allowed_

double absdiff_max_allowed_

protected

Maximum absolute difference of numbers allowed, see absdiff_max_.

## ◆ element_1_

StreamElement_ element_1_

protected

Stores information about characters, numbers, and white spaces loaded from the first input stream.

## ◆ element_2_

StreamElement_ element_2_

protected

Stores information about characters, numbers, and white spaces loaded from the second input stream.

## ◆ first_column_

int first_column_

protected

## ◆ input_1_name_

std::string input_1_name_

protected

Name of first input e.g., filename.

## ◆ input_2_name_

std::string input_2_name_

protected

Name of second input e.g., filename.

## ◆ input_line_1_

InputLine input_line_1_

protected

## ◆ input_line_2_

InputLine input_line_2_

protected

## ◆ is_absdiff_small_

bool is_absdiff_small_

protected

## ◆ is_status_success_

bool is_status_success_

protected

Has comparison been successful so far? Note: this flag is changed in reportFailure_();.

## ◆ line_num_1_

int line_num_1_

protected

## ◆ line_num_1_max_

int line_num_1_max_

protected

## ◆ line_num_2_

int line_num_2_

protected

## ◆ line_num_2_max_

int line_num_2_max_

protected

## ◆ line_str_1_max_

std::string line_str_1_max_

protected

## ◆ line_str_2_max_

std::string line_str_2_max_

protected

## ◆ log_dest_

std::ostream* log_dest_

protected

Log and results output goes here.

## ◆ matched_whitelist_

std::vector< std::pair<std::string, std::string> > matched_whitelist_

protected

Alternative Whitelist.

## ◆ ratio_max_

double ratio_max_

protected

Maximum ratio of numbers observed so far, see ratio_max_allowed_.

## ◆ ratio_max_allowed_

double ratio_max_allowed_

protected

Maximum ratio of numbers allowed, see ratio_max_.

## ◆ tab_width_

int tab_width_

protected

## ◆ use_prefix_

bool use_prefix_

protected

use a prefix when reporting

## ◆ verbose_level_

int verbose_level_

protected

## ◆ whitelist_

StringList whitelist_

protected

Whitelist.

## ◆ whitelist_cases_

std::map<String, UInt> whitelist_cases_

protected

Occurrences of whitelist entries.