Ejemplo n.º 1
0
parsed_atom parse_pdbqt_atom_string(const std::string& str) {
	unsigned number = checked_convert_substring<unsigned>(str, 7, 11, "atom number");
	vec coords(checked_convert_substring<fl>(str, 31, 38, "coordinate"),
			   checked_convert_substring<fl>(str, 39, 46, "coordinate"),
			   checked_convert_substring<fl>(str, 47, 54, "coordinate"));
	fl charge = 0;
	if(!substring_is_blank(str, 69, 76))
		charge = checked_convert_substring<fl>(str, 69, 76, "charge");
	std::string name = omit_whitespace(str, 78, 79);
	sz ad = string_to_ad_type(name);
	parsed_atom tmp(ad, charge, coords, number);
	if(is_non_ad_metal_name(name))
		tmp.xs = XS_TYPE_Met_D;
	if(tmp.acceptable_type()) 
		return tmp;
	else 
		throw atom_syntax_error(std::string("\"") + name + "\" is not a valid AutoDock type. Note that AutoDock atom types are case-sensitive.");
}
Ejemplo n.º 2
0
int omit_whitespace_newline(int c) { return omit_whitespace(c) || c == '\n'; }