17 #include <basic/Tracer.hh>
18 #include <basic/options/option.hh>
19 #include <basic/options/keys/out.OptionKeys.gen.hh>
20 #include <basic/options/keys/corrections.OptionKeys.gen.hh>
30 #include <basic/datacache/CacheableData.hh>
31 #include <basic/datacache/BasicDataCache.hh>
32 #include <utility/vector1.hh>
33 #include <utility/tag/Tag.hh>
34 #include <utility/string_util.hh>
39 #include <basic/options/option.hh>
40 #include <basic/options/keys/pb_potential.OptionKeys.gen.hh>
47 namespace pb_potential{
53 static basic::Tracer
TR (
"protocols.pb_potential.SetupPoissonBoltzmannPotential");
72 return "SetupPoissonBoltzmannPotential";
86 using namespace scoring;
87 using namespace methods;
90 if( !pose.
data().has( pose::datacache::CacheableDataType::PB_LIFETIME_CACHE ) ){
92 pose.
data().set( pose::datacache::CacheableDataType::PB_LIFETIME_CACHE, new_cache );
98 pose.
data().set( pose::datacache::CacheableDataType::PB_LIFETIME_CACHE, cached_data );
114 return "SetupPoissonBoltzmannPotential";
130 if( tag->hasOption(
"apbs_path" ) ) {
131 apbs_path = tag->getOption<
std::string>(
"apbs_path");
133 #ifdef LINK_APBS_LIBS
134 std::ifstream apbsstream( apbs_path.c_str() );
135 if( !apbsstream.good() ){
136 TR <<
"APBS not found. Check the path: " << apbs_path << std::endl;
138 runtime_assert(
false);
142 basic::options::option[basic::options::OptionKeys::pb_potential::apbs_path](apbs_path);
145 if( tag->hasOption(
"charged_chains" )) {
149 charged_chains.push_back(atoi(temp[i].c_str()));
153 TR <<
"No user defined charged chains. Default to : 1" << std::endl;
154 charged_chains.push_back(1);
156 basic::options::option[basic::options::OptionKeys::pb_potential::charged_chains](charged_chains);
159 if( tag->hasOption(
"revamp_near_chain") ) {
162 revamp_near_chain.push_back(atoi(temp[i].c_str()));
164 basic::options::option[basic::options::OptionKeys::pb_potential::revamp_near_chain]( revamp_near_chain);
168 if( tag->hasOption(
"potential_cap") ) {
169 potential_cap = tag->getOption<
core::Real>(
"potential_cap" );
170 basic::options::option[basic::options::OptionKeys::pb_potential::potential_cap]( potential_cap );
174 if( tag->hasOption(
"sidechain_only") ) {
175 sidechain_only = tag->getOption<
bool>(
"sidechain_only" );
176 basic::options::option[basic::options::OptionKeys::pb_potential::sidechain_only]( sidechain_only );
180 if( tag->hasOption(
"epsilon") ) {
181 epsilon = tag->getOption<
core::Real>(
"epsilon" );
182 basic::options::option[basic::options::OptionKeys::pb_potential::epsilon]( epsilon );
185 if( tag->hasOption(
"calcenergy") ) {
186 calcenergy = tag->getOption<
bool>(
"calcenergy" );
187 basic::options::option[basic::options::OptionKeys::pb_potential::calcenergy]( calcenergy );
190 if( tag->hasOption(
"apbs_debug") ) {
191 apbs_debug = tag->getOption<
int>(
"apbs_debug" );
192 basic::options::option[basic::options::OptionKeys::pb_potential::apbs_debug]( apbs_debug );
199 tag->setOption<
bool>(
"repack",1);
201 if( scorefxn_name !=
"" ) {
205 TR.Error <<
"PB_elec term is required. Not found in the scorefxn. Terminating the program..." << std::endl;
207 runtime_assert(
false);
210 ddg_->parse_my_tag( tag, data_map, filters_map, movers_map, pose );