17 #include <protocols/boinc/boinc.hh>
18 #include "boinc_zip.h"
22 #include <core/io/silent/util.hh>
23 #include <protocols/abinitio/AbrelaxApplication.hh>
24 #include <protocols/abinitio/IterativeAbrelax.hh>
25 #include <protocols/cyclic_peptide_predict/SimpleCycpepPredictApplication.hh>
26 #include <protocols/jd2/archive/ArchiveManager.hh>
27 #include <protocols/abinitio/BrokerMain.hh>
28 #include <protocols/boinc/util.hh>
29 #include <protocols/comparative_modeling/cm_main.hh>
30 #include <protocols/medal/MedalMain.hh>
31 #include <protocols/symmetric_docking/SymDockProtocol.hh>
32 #include <protocols/rbsegment_relax/RBSegmentRelax_main.hh>
33 #include <protocols/loop_build/LoopBuild.hh>
34 #include <protocols/loophash/Mover_LoopHashRefine.hh>
35 #include <protocols/abinitio/vs_test.hh>
36 #include <protocols/jd2/JobDistributor.hh>
37 #include <protocols/ligand_docking/ligand_dock_impl.hh>
38 #include <protocols/flxbb/FlxbbDesign_main.hh>
39 #include <protocols/ddg/ddG_main.hh>
40 #include <protocols/canonical_sampling/CanonicalSamplingApplication.hh>
41 #include <protocols/canonical_sampling/CanonicalSamplingMover.hh>
42 #include <protocols/frag_picker/nonlocal/NonlocalFragsMain.hh>
43 #include <protocols/star/StarAbinitioMain.hh>
46 #include <protocols/boinc/boinc.hh>
47 #include <protocols/init/init.hh>
51 #include <protocols/init/init.hh>
52 #include <core/import_pose/import_pose.hh>
53 #include <core/io/pdb/pose_io.hh>
56 #include <core/types.hh>
65 #include <core/pose/Pose.hh>
66 #include <core/import_pose/import_pose.hh>
67 #include <core/io/pdb/pose_io.hh>
68 #include <core/io/silent/util.hh>
69 #include <core/pose/util.hh>
77 #include <basic/options/keys/in.OptionKeys.gen.hh>
78 #include <basic/options/keys/run.OptionKeys.gen.hh>
79 #include <basic/options/keys/jd2.OptionKeys.gen.hh>
80 #include <basic/options/keys/boinc.OptionKeys.gen.hh>
82 #include <protocols/checkpoint/Checkpoint.hh>
83 #include <protocols/jd2/BOINCJobDistributor.hh>
84 #include <protocols/relax/relax_main.hh>
93 std::cerr <<
"DummyMover::apply() should never have been called!"
94 <<
" (JobDistributor/Parser should have replaced DummyMover.)" << std::endl;
97 virtual std::string
get_name()
const {
return "DummyMover"; }
101 main(
int argc,
char * argv [] )
106 using namespace basic::options::OptionKeys;
110 #ifdef BOINC // BOINC STUFF
113 using namespace protocols::boinc;
114 Boinc boinc_wu = Boinc::instance();
115 boinc_wu.initialize_worker();
118 for (
int i=0; i<argc; ++i) {
119 if (!strcmp(argv[i],
"-use_filters")) {
120 std::cerr <<
"Fixing ambiguous flag " << argv[i];
121 char tmpstr[] =
"-abinitio::use_filters";
123 std::cerr <<
" to " << argv[i] << std::endl;
128 for (
int i=0; i< argc; ++i ) {
136 #ifdef BOINC // BOINC STUFF
147 #ifdef BOINC // BOINC STUFF
150 protocols::abinitio::register_options_broker();
152 #ifdef BOINC // BOINC STUFF
170 #ifdef BOINC // BOINC STUFF
172 #ifdef BOINC_GRAPHICS
175 Boinc::set_wu_desc();
176 Boinc::set_randomly_cycle_appearance(
option[run::protocol]() !=
"simple_cycpep_predict" );
181 std::string resolvedfile =
option[ in::file::zip ]();
182 bool is_database =
false;
183 if (resolvedfile ==
"minirosetta_database.zip") {
189 utility::boinc::resolve_filename( resolvedfile );
192 option[ in::file::zip ]()+
" does not exist!");
195 boinc_zip(UNZIP_IT, resolvedfile,
"./");
204 if (
option[ in::file::boinc_wu_zip ].
user() ) {
206 vector1< string > files =
option[ in::file::boinc_wu_zip ]();
208 std::string resolvedfile = *it;
209 utility::boinc::resolve_filename( resolvedfile );
212 *it +
" does not exist!"
216 boinc_zip(UNZIP_IT, resolvedfile,
"./");
228 if (
option[ run::checkpoint ] ||
option[ run::checkpoint_interval ].
user() ) {
229 protocols::checkpoint::checkpoint_with_interval(
option[ run::checkpoint_interval ] );
232 #ifdef BOINC_GRAPHICS
238 if ( native_pose_->total_residue() <= protocols::boinc::MAX_NATIVE_POSE_RESIDUES ) {
239 core::pose::set_ss_from_phipsi( *native_pose_ );
240 protocols::boinc::Boinc::set_graphics_native_pose( *native_pose_ );
244 protocols::boinc::Boinc::set_shared_memory_fully_initialized();
251 if (
option[ run::protocol ]() ==
"abrelax" ) {
252 protocols::abinitio::AbrelaxApplication abrelax;
254 }
else if (
option[run::protocol]() ==
"simple_cycpep_predict" ) {
255 protocols::cyclic_peptide_predict::SimpleCycpepPredictApplication peppredict;
257 }
else if (
option[ run::protocol ]() ==
"symdock" ) {
258 protocols::symmetric_docking::SymDock_main();
259 }
else if (
option[ run::protocol ]() ==
"broker" ) {
260 protocols::abinitio::Broker_main();
261 }
else if (
option[ run::protocol ]() ==
"loophash" ) {
262 protocols::loophash::loophash_main();
263 }
else if (
option[ run::protocol ]() ==
"ligand_dock" ) {
265 }
else if (
option[ run::protocol ]() ==
"relax" ) {
266 protocols::relax::Relax_main(
true );
267 }
else if (
option[ run::protocol ]() ==
"looprelax" ) {
268 protocols::loop_build::LoopBuild_main(
true );
269 }
else if (
option[ run::protocol ]() ==
"threading" ) {
270 protocols::comparative_modeling::cm_main();
271 }
else if (
option[ run::protocol ]() ==
"medal" ) {
272 protocols::medal::Medal_main(NULL);
273 }
else if (
option[ run::protocol ]() ==
"medal_exchange" ) {
274 protocols::medal::MedalExchange_main(NULL);
275 }
else if (
option[ run::protocol ]() ==
"star" ) {
276 protocols::star::StarAbinitio_main(NULL);
277 }
else if (
option[ run::protocol ]() ==
"rbsegmentrelax" ) {
278 protocols::RBSegmentRelax_main( );
279 }
else if (
option[ run::protocol ]() ==
"boinc_debug" ) {
280 protocols::abinitio::run_boinc_debug();
281 }
else if (
option[ run::protocol ]() ==
"flxbb" ) {
282 protocols::flxbb::FlxbbDesign_main();
283 }
else if (
option[ run::protocol ]() ==
"jd2_scripting" ) {
284 protocols::moves::MoverOP mover(
new DummyMover );
285 option[ jd2::dd_parser ].value(
true );
287 protocols::jd2::BOINCJobDistributor::get_instance()->go( mover );
288 }
else if (
option[run::protocol]() ==
"ddg" ) {
289 protocols::ddG_main();
290 }
else if (
option[run::protocol]() ==
"canonical_sampling" ) {
291 protocols::canonical_sampling::canonical_sampling_main();
292 }
else if (
option[run::protocol]() ==
"nonlocal_frags" ) {
293 protocols::frag_picker::nonlocal::NonlocalFrags_main();
296 "Invalid protocol requested: "+
option[ run::protocol ]()
302 double runtime = protocols::boinc::Boinc::get_boinc_wu_cpu_time();
307 double minTimePerModel = 61;
308 protocols::boinc::boincOutputFilter(runtime,minTimePerModel);
313 std::cerr <<
"reached end of minirosetta::main()" << std::endl;
318 protocols::boinc::Boinc::worker_finish_summary( protocols::boinc::Boinc::decoy_count() + 2 , protocols::boinc::Boinc::decoy_count() + 2 , 2 );
319 protocols::boinc::Boinc::worker_shutdown();
323 std::cerr <<
"std::cerr: Exception was thrown: " << std::endl;
325 std::cout <<
"std::cout: Exception was thrown: " << std::endl;
328 MPI_Abort( MPI_COMM_WORLD, 911 );
334 std::cout <<
"caught exception " << e.
msg() << std::endl;
348 int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
349 LPSTR Args,
int WinMode)
355 command_line = GetCommandLine();
356 argc = parse_command_line( command_line, argv );
357 return main(argc, argv);
ocstream cerr(std::cerr)
Wrapper around std::cerr.
#define utility_exit_with_message(m)
Exit with file + line + message.
virtual std::string const msg() const
utility::keys::KeyLookup< KeyType >::const_iterator const_iterator
Key collection iterators.
vector0: std::vector with assert-checked bounds
Wrappers to make BOINC work.
void init(int argc, char *argv[])
Command line init() version.
BooleanOptionKey const user("options:user")
utility::keys::lookup::end< KeyType > const end
Platform independent operations on files (except I/O)
#define runtime_assert(_Expression)
Assert that the condition holds. Evaluated for both debug and release builds.
long gzip(std::string const &uncompressedfile, bool overwrite)
gzip: file compression
int main(int argc, char *argv[])
common derived classes for thrown exceptions
virtual void show(std::ostream &) const =0
Program exit functions and macros.
virtual std::string get_name() const
std::vector with 1-based indexing
rule< Scanner, options_closure::context_t > options
utility::options::OptionCollection option
OptionCollection global.
Output file stream wrapper for uncompressed and compressed files.
virtual void apply(core::pose::Pose &)
ocstream cout(std::cout)
Wrapper around std::cout.
vector1: std::vector with 1-based indexing
bool file_exists(std::string const &path)
Does File Exist?
ozstream: Output file stream wrapper for uncompressed and compressed files
Must have this after BOINC stuff to avoid windows build error.
void init()
set global 'init_was_called' to true
Program options global and initialization function.
ocstream & flush()
Flush the stream.