22 #include <utility/tag/Tag.hh>
23 #include <utility/tools/make_vector.hh>
24 #include <utility/json_spirit/json_spirit_value.h>
26 #include <numeric/xyz.json.hh>
28 #include <boost/math/constants/constants.hpp>
34 namespace scoring_grid {
38 using utility::json_spirit::Value;
39 using utility::json_spirit::Pair;
41 Pair xyz_record(
"xyz",numeric::serialize(
xyz));
42 Pair nc_record(
"nc",Value(static_cast<boost::uint64_t>(
neighbor_count)));
43 Pair charge_record(
"charge",Value(
charge));
45 return Value(utility::tools::make_vector(xyz_record,nc_record,charge_record));
51 charge = data[
"charge"].get_real();
53 xyz = numeric::deserialize<core::Real>(data[
"xyz"].get_array());
63 charge_grid->parse_my_tag(tag);
83 indirect_numerator_( (4.0 - 80.0) / (4.0 + 80.0) ),
84 epsilon_0_(8.854187817
E-12)
93 indirect_numerator_( (4.0 - 80.0) / (4.0 + 80.0) ),
94 epsilon_0_(8.854187817
E-12)
101 using utility::json_spirit::Value;
102 using utility::json_spirit::Pair;
106 std::vector<Value> charge_atom_data;
109 charge_atom_data.push_back(it->serialize());
112 Pair charge_atom_record(
"atoms",charge_atom_data);
113 return Value(utility::tools::make_vector(charge_atom_record,base_data));
121 utility::json_spirit::mArray charge_atom_data(data[
"atoms"].get_array());
122 for(utility::json_spirit::mArray::iterator it = charge_atom_data.begin(); it != charge_atom_data.end();++it)
139 for(
core::Size x_index =0; x_index < dimensions.x(); ++x_index)
141 for(
core::Size y_index = 0; y_index < dimensions.y(); ++y_index)
143 for(
core::Size z_index = 0; z_index < dimensions.z(); ++z_index)
150 std::list<ChargeAtom>::iterator protein_charge_atom_it =
charge_atom_list_.begin();
151 for(; protein_charge_atom_it !=
charge_atom_list_.end(); ++protein_charge_atom_it)
153 if(protein_charge_atom_it->xyz.distance(pdb_coords) <= 4.0)
157 if(neighbor_count >= 12)
165 ChargeAtom grid_charge_atom(pdb_coords,0.0,neighbor_count);
170 for(; protein_charge_atom_it !=
charge_atom_list_.end(); ++protein_charge_atom_it)
201 for(
core::Size atom_index = 1; atom_index <= residue.
natoms() && score < max_score; ++atom_index )
252 }
else if(n_atoms >= 12)
257 utility_exit_with_message(
"This should never have happened");
275 return direct_term*indirect_term;
286 for(
core::Size current_residue_index = chain_begin; current_residue_index <= chain_end; ++current_residue_index)
289 for(
core::Size current_atom_index = 1; current_atom_index <= current_residue.
natoms();++current_atom_index)
296 for(
core::Size neighbor_residue_index = chain_begin; neighbor_residue_index <= chain_end; ++neighbor_residue_index)
300 for(
core::Size neighbor_atom_index = 1; neighbor_atom_index <= neighbor_residue.
natoms();++neighbor_atom_index)
302 core::id::AtomID neighbor_atom_id(neighbor_atom_index,neighbor_residue_index);
304 if(neighbor_atom_coords.distance(neighbor_atom_coords) <= 4.0)
306 current_atom_neighbor_count++;
309 if(current_atom_neighbor_count >= 12)