/// \brief Parse an hbond from the specified string from within a DSSP line dsspfile_hbond_opt dssp_dupl_fixture::parse_dsspfile_bond(const string &arg_hbond_string ///< The string containing the DSSP h-bond data (eg "-2,-2.6") ) { const str_vec parts = split_build<str_vec>( arg_hbond_string, is_any_of( "," ), token_compress_on ); if ( parts.size() != 2 ) { BOOST_THROW_EXCEPTION(runtime_error_exception("Did not find two parts in DSSP file h-bond")); } const int offset = stoi( trim_copy( parts.front() ) ); const double energy = stod( trim_copy( parts.back () ) ); if ( offset == 0 ) { if ( energy != 0.0 ) { BOOST_THROW_EXCEPTION(runtime_error_exception("Whilst try to parse H-bond from DSSP file data, non-zero energy for zero offset")); } return none; } else { return dsspfile_hbond{ offset, energy }; } }