16 ss << this->
slavemap[filename].filecount;
26 boost::filesystem::path called_dir){
34 settingmap::iterator iter;
35 for (iter=paramotopy_settings.
settings[
"SaveFiles"].begin(); iter!=paramotopy_settings.
settings[
"SaveFiles"].end(); ++iter){
36 if (iter->second.intvalue==1) {
37 std::string tmpstr = iter->first;
38 if (paramotopy_settings.
settings[
"mode"][
"standardstep2"].intvalue==0 && tmpstr.compare(
"real_solutions") == 0){
39 tmpstr =
"real_finite_solutions";
58 std::stringstream myss;
61 myss.clear(); myss.str(
"");
66 if (paramotopy_settings.
settings[
"mode"][
"standardstep2"].intvalue==0){
85 timer & process_timer){
90 std::map< std::string, fileinfo> ::iterator iter;
98 if (paramotopy_settings.
settings[
"mode"][
"main_mode"].intvalue==1 && iter->first.compare(this->real_filename)==0) {
102 paramotopy_settings);
120 if (
int(iter->second.runningfile.size()) > this->
buffersize){
123 iter->second.filesize += int(iter->second.runningfile.size());
135 iter->second.runningfile.clear();
136 if (iter->second.filesize > this->newfilethreshold) {
137 iter->second.filecount++;
138 iter->second.filesize = 0;
156 double *current_params,
162 std::string cline =
"";
163 std::stringstream outstring;
168 std::ifstream fin(orig_filename.c_str());
170 if (!fin.is_open()) {
171 std::cerr <<
"failed to open file '" << orig_filename <<
"' to read data" << std::endl;
172 MPI_Abort(MPI_COMM_WORLD,-42);
182 int tmp_num_found_solns = 0;
183 std::stringstream converter, current_point_data;
184 for (
int ii=0; ii<int(solutions_this_point.size()); ++ii) {
188 for (
int jj=0; (jj<this->
numvariables) && (is_soln); ++jj) {
189 double comparitor_real, comparitor_imag;
190 converter << solutions_this_point[ii][jj].first << solutions_this_point[ii][jj].second;
191 converter >> comparitor_real >> comparitor_imag;
192 converter.clear(); converter.str(
"");
195 if (comparitor_real<0 || fabs(comparitor_imag)>1e-8 ) {
204 current_point_data << solutions_this_point[ii][jj].first <<
" " << solutions_this_point[ii][jj].second <<
"\n";
206 current_point_data <<
"\n";
207 tmp_num_found_solns++;
214 bool meets_upper_thresh;
216 if (paramotopy_settings.
settings[
"mode"][
"search_numposrealthreshold_upper"].intvalue==-1){
217 meets_upper_thresh =
true;
220 meets_upper_thresh = (tmp_num_found_solns<=paramotopy_settings.
settings[
"mode"][
"search_numposrealthreshold_upper"].intvalue);
224 bool meets_lower_thresh = (tmp_num_found_solns>=paramotopy_settings.
settings[
"mode"][
"search_numposrealthreshold_lower"].intvalue);
226 if (meets_lower_thresh && meets_upper_thresh) {
228 outstring << current_params[2*int(
ParamNames.size())] <<
"\n";
230 for (
int ii = 0; ii < int(
ParamNames.size());++ii){
231 outstring.precision(16);
232 outstring << current_params[2*ii] <<
" ";
233 outstring.precision(16);
234 outstring << current_params[2*ii+1] <<
" ";
238 outstring << tmp_num_found_solns <<
"\n\n";
239 outstring << current_point_data.str();
241 slavemap[orig_filename].num_found_solns = tmp_num_found_solns;
242 slavemap[orig_filename].runningfile.append(outstring.str());
248 slavemap[orig_filename].num_found_solns = 0;
260 double *current_params){
263 std::string cline =
"";
264 std::stringstream outstring;
265 std::ifstream fin(orig_filename.c_str());
267 if (!fin.is_open()) {
268 std::cerr <<
"failed to open file '" << orig_filename <<
"' to read data" << std::endl;
273 outstring << current_params[2*int(
ParamNames.size())] <<
"\n";
275 for (
int ii = 0; ii < int(
ParamNames.size());++ii){
276 outstring.precision(16);
277 outstring << current_params[2*ii] <<
" " << current_params[2*ii+1] <<
" ";
280 while(getline(fin,cline)){
281 outstring << cline <<
"\n";
285 slavemap[orig_filename].num_found_solns = 0;
286 slavemap[orig_filename].runningfile.append(outstring.str());
294 std::map<std::string, fileinfo>::iterator iter;
304 boost::filesystem::path target_file)
312 if (boost::filesystem::exists(target_file)){
313 fout.open(target_file.string().c_str(),std::ios::app);
318 fout.open(target_file.string().c_str());
319 for (
int ii = 0; ii < int(this->
ParamNames.size());++ii){
324 if (!fout.is_open()) {
325 std::cerr <<
"failed to open target dataout file '" << target_file.string() <<
"'\n";
340 std::vector< point > & successful_resolves)
357 folder_with_data /=
"gathered_data/finalized";
378 std::vector< point > successful_resolves;
382 if (terminal_fails.size() == current_data.size()) {
386 std::vector< int > flag_if_success;
387 flag_if_success.resize(current_data.size());
389 for (
int ii=0; ii<int(current_data.size()); ++ii) {
390 flag_if_success[ii]=1;
394 successful_resolves.resize(current_data.size()-terminal_fails.size());
396 for (
int ii=0; ii<int(terminal_fails.size()); ++ii) {
397 flag_if_success[terminal_fails[ii].index] = 0;
401 for (
int ii=0; ii<int(current_data.size()); ++ii) {
402 if (flag_if_success[ii]==1){
403 successful_resolves[counter].index = current_data[ii].index;
404 successful_resolves[counter].collected_data = current_data[ii].collected_data;
412 return successful_resolves;
421 std::map <std::string, std::vector< point > > temp_point_storage;
422 std::vector< point > master_point_storage;
427 boost::filesystem::path currentfile = folder_with_data;
429 std::vector < point > gathered_data;
432 std::ifstream datafile(currentfile.string().c_str());
434 if (!datafile.is_open()) {
435 std::cerr <<
"failed to open " << currentfile.string() << std::endl;
436 return master_point_storage;
441 getline(datafile,tmpstr);
446 tmppoint.
index = index;
448 gathered_data.push_back(tmppoint);
452 std::sort(gathered_data.begin(), gathered_data.end());
456 master_point_storage.resize(temp_point_storage[
gather_savefiles[0]].size());
461 for (
int ii=0; ii< int (temp_point_storage[
gather_savefiles[0]].size()); ++ii) {
468 master_point_storage[ii] = tmppoint;
471 std::sort(master_point_storage.begin(), master_point_storage.end());
474 return master_point_storage;
488 if (run_to_analyze.string()==
"") {
503 std::vector< boost::filesystem::path > folders_with_data =
GetFoldersForData(run_to_analyze);
522 std::vector < boost::filesystem::path > folders_with_data,
523 boost::filesystem::path run_to_analyze,
int parser_index,
bool mergefailed)
528 boost::filesystem::path output_folder_name =
"unset_folder_name";
529 int output_folder_index = -1;
532 base_output_folder_name /=
"gathered_data";
533 boost::filesystem::create_directory(base_output_folder_name);
537 std::vector< bool> current_folders_are_basic, next_folders_are_basic;
539 std::vector< boost::filesystem::path > next_folders = folders_with_data;
540 std::vector< boost::filesystem::path > current_folders;
542 for (
int ii=0; ii<int(folders_with_data.size()); ++ii) {
543 next_folders_are_basic.push_back(
true);
546 int current_num_folders;
548 while (next_folders.size()>1){
550 current_folders = next_folders;
551 current_num_folders = current_folders.size();
552 current_folders_are_basic = next_folders_are_basic;
554 next_folders.clear();
555 next_folders_are_basic.clear();
558 for (
int jj=0; jj< ( current_num_folders - (current_num_folders%2) ) ; jj=jj+2) {
560 boost::filesystem::create_directory(output_folder_name);
565 next_folders_are_basic.push_back(
false);
566 next_folders.push_back(output_folder_name);
568 if ( current_folders_are_basic[jj]==
false ) {
569 boost::filesystem::remove_all(current_folders[jj]);
573 if ( current_folders_are_basic[jj+1]==
false ) {
574 boost::filesystem::remove_all(current_folders[jj+1]);
581 if ( ( (current_num_folders%2) == 1) ) {
582 next_folders.push_back(current_folders[current_num_folders-1]);
583 if (current_folders_are_basic[current_num_folders-1]==
true) {
584 next_folders_are_basic.push_back(
true);
590 boost::filesystem::path source_folder;
591 source_folder = next_folders[0];
592 bool source_folder_is_basic = next_folders_are_basic[0];
598 if (source_folder_is_basic==
false) {
599 boost::filesystem::remove_all(source_folder);
609 std::map< int, point > successful_resolves;
612 boost::filesystem::path filetoopen = this->
base_dir;
613 filetoopen /=
"failure_analysis/resolved_file";
615 if (!boost::filesystem::exists(filetoopen)) {
616 std::cout << filetoopen.string() <<
" does not exist, for reading in successful re-solves." << std::endl;
617 return successful_resolves;
620 std::string resolved_file_name;
622 std::ifstream sourcefile(filetoopen.string().c_str());
623 getline(sourcefile,resolved_file_name);
627 filetoopen = resolved_file_name;
630 if (!boost::filesystem::exists(filetoopen)) {
631 std::cerr <<
"file " << filetoopen.string() <<
" doesn't exist, even though it should." << std::endl;
632 return successful_resolves;
636 sourcefile.open(resolved_file_name.c_str());
639 std::stringstream converter;
640 int num_attempted_resolves;
643 getline(sourcefile,tmpstr);
645 converter >> num_attempted_resolves;
647 std::map < std::string, int > parsermap;
648 parsermap[
"real_solutions"] = 1;
649 parsermap[
"nonsingular_solutions"] = 1;
650 parsermap[
"singular_solutions"] = 1;
651 parsermap[
"raw_data"] = -1;
652 parsermap[
"raw_solutions"] = -1;
653 parsermap[
"main_data"] = -1;
654 parsermap[
"midpath_data"] = -1;
655 parsermap[
"failed_paths"] = 2;
658 for (
int ii=0; ii<num_attempted_resolves; ++ii) {
660 int next_index, num_files_to_collect;
661 std::string next_data;
662 std::stringstream converter;
663 getline(sourcefile,tmpstr);
665 converter >> next_index;
666 converter >> num_files_to_collect;
671 tmppoint.
index = next_index;
673 if (num_files_to_collect>0) {
674 std::vector< std::string > filename;
675 filename.resize(num_files_to_collect);
676 getline(sourcefile, tmpstr);
678 for (
int jj = 0; jj<num_files_to_collect; ++jj) {
679 converter >> filename[jj];
683 for (
int kk=0; kk<num_files_to_collect; ++kk) {
689 successful_resolves[next_index] = tmppoint;
696 return successful_resolves;
705 std::map<int, point>::iterator iter;
707 boost::filesystem::path persistentfails_name = this->
base_dir;
708 persistentfails_name /=
"gathered_data/finalized/persistent_fails";
710 std::ofstream persistentfails(persistentfails_name.string().c_str());
711 if (!persistentfails.is_open()) {
712 std::cerr <<
"failed to open " << persistentfails_name.string() << std::endl;
716 for (iter=successful_resolves.begin(); iter!=successful_resolves.end(); iter++) {
717 if (iter->second.collected_data.size()==0) {
718 persistentfails << iter->first <<
"\n";
722 persistentfails.close();
728 boost::filesystem::path source_folder,
729 boost::filesystem::path base_output_folder_name,
730 int parser_index,
bool mergefailed)
734 boost::filesystem::path output_file_name = base_output_folder_name;
735 output_file_name /=
"finalized";
738 boost::filesystem::create_directory(output_file_name);
740 output_file_name /= file_to_gather;
741 output_file_name +=
"0";
743 boost::filesystem::remove(output_file_name);
747 std::string expression =
"^";
748 expression.append(file_to_gather);
749 std::vector < boost::filesystem::path > filelist =
FindFiles(source_folder, expression);
752 std::ofstream output_file(output_file_name.c_str());
757 int previous_index = -1;
759 std::string next_data =
"";
762 std::map< int, point > successful_resolves;
768 bool passed_check =
true;
774 for (
int ii=0; ii< int(filelist.size()); ++ii) {
783 std::vector<int> lookupinfo;
785 std::ifstream sourcefile(filelist[ii].c_str());
787 if (!sourcefile.is_open()) {
788 std::cerr <<
"error: " << filelist[ii] <<
" failed to open" << std::endl;
791 getline(sourcefile,tmpstr);
793 output_file << tmpstr <<
"\n";
795 bytecount+=tmpstr.size() + 1;
796 lookupinfo.push_back(bytecount);
800 bytecount+=next_data.size() + 1;
803 std::stringstream ss_ni;
805 bytecount+=ss_ni.str().size();
807 lookupinfo.push_back(bytecount);
810 if (next_index!=(previous_index+1)){
811 std::cerr <<
"index mismatch, filename " << file_to_gather <<
", with indices " << previous_index <<
" & " << next_index << std::endl;
812 passed_check =
false;
819 output_file << next_index <<
"\n" << next_data;
820 previous_index = next_index;
828 boost::filesystem::path output_lookup = base_output_folder_name;
829 boost::filesystem::path filename = filelist[ii].filename();
831 output_lookup /=
"finalized";
832 output_lookup /=
"lookup_";
833 output_lookup += filename;
837 std::ofstream fout_lookup(output_lookup.c_str());
838 for (
int mm = 0; mm < lookupinfo.size(); ++mm){
839 fout_lookup << lookupinfo[mm] <<
"\n";
848 boost::filesystem::path output_lookup = base_output_folder_name;
849 boost::filesystem::path filename = filelist[ii].filename();
851 output_lookup /=
"finalized";
852 output_lookup /=
"lookup_";
853 output_lookup += filename;
855 boost::filesystem::remove(output_lookup);
866 std::cout <<
"done finalizing file " << file_to_gather <<
"." << std::endl;
869 std::cout <<
"passed integrity check for in-orderness of points." << std::endl;
873 std::cout <<
"failed integrity check. one or more points were out of order or missing." << std::endl;
874 std::cout <<
"todo: keep record of missing points" << std::endl;
883 int next_index,std::string & next_data,
884 std::map< int, point> successful_resolves)
888 if (successful_resolves.find(next_index) ==successful_resolves.end()) {
896 if (successful_resolves[next_index].collected_data.find(file_to_gather)!=successful_resolves[next_index].collected_data.end() ){
897 next_data = successful_resolves[next_index].collected_data[file_to_gather];
898 std::cout << next_index <<
" replaced with resolved data." << std::endl;
917 std::vector< boost::filesystem::path > completed_runs;
920 int completed_counter = 0;
921 for (
int ii = 0; ii<int(found_runs.size()); ii++){
924 completed_runs.push_back(found_runs[ii]);
925 std::cout << completed_counter <<
": " << found_runs[ii].string() <<
"\n";
933 if (completed_counter==0){
934 std::cout <<
"found no completed runs. sorry.\n";
939 if (completed_counter==1){
940 run_to_analyze = completed_runs[0];
943 int choice =
get_int_choice(
"which run?\n: ",0,completed_counter-1);
944 run_to_analyze = completed_runs[choice];
954 boost::filesystem::path right_folder, boost::filesystem::path output_folder_name,
int parser_index)
957 std::stringstream converter;
959 boost::filesystem::path output_file_name = output_folder_name;
960 output_file_name /= file_to_gather +=
"0";
963 std::ofstream outputfile(output_file_name.c_str());
965 if (!outputfile.is_open()) {
966 std::cerr <<
"outputfile " << output_file_name <<
" failed to open for writing results of merge." << std::endl;
971 std::string expression =
"^";
972 expression.append(file_to_gather);
974 int file_index_left = 0, file_index_right = 0;
976 int next_index_left, next_index_right;
978 std::string output_buffer;
980 std::vector < boost::filesystem::path > filelist_left =
FindFiles(left_folder, expression);
981 std::vector < boost::filesystem::path > filelist_right =
FindFiles(right_folder, expression);
984 if (filelist_left.size()==0) {
985 std::cerr <<
"folder to merge '" << left_folder.string() <<
"' had no data files!" << std::endl;
988 if (filelist_right.size()==0) {
989 std::cerr <<
"folder to merge '" << right_folder.string() <<
"' had no data files!" << std::endl;
994 std::string tmp_left, tmp_right;
995 std::string next_data_left, next_data_right;
997 std::ifstream datafile_left( filelist_left[0].c_str());
998 std::ifstream datafile_right(filelist_right[0].c_str());
1000 if (!datafile_left.is_open()) {
1001 std::cerr << filelist_left[0] <<
" failed to open for merging" << std::endl;
1003 if (!datafile_right.is_open()) {
1004 std::cerr << filelist_right[0] <<
" failed to open for merging" << std::endl;
1007 getline(datafile_left,tmp_left);
1008 getline(datafile_right,tmp_right);
1011 bool keep_going_left, keep_going_right, next_read_left, next_read_right;
1015 if (datafile_left.eof()) {
1016 keep_going_left =
false;
1019 keep_going_left =
true;
1020 next_read_left =
true;
1023 if (datafile_right.eof()) {
1024 keep_going_right =
false;
1027 keep_going_right =
true;
1028 next_read_right =
true;
1032 output_buffer.append(tmp_left);
1033 output_buffer.append(
"\n");
1039 if (next_read_left){
1042 if (next_read_right) {
1047 while ( datafile_left.eof() && keep_going_left ) {
1051 while (datafile_right.eof() && keep_going_right ) {
1059 if ( (!keep_going_left) || (!keep_going_right) ){
1063 if (!keep_going_left) {
1065 converter << next_index_right;
1066 output_buffer.append(converter.str());
1069 output_buffer.append(
"\n");
1070 output_buffer.append(next_data_right);
1074 if (!keep_going_right){
1076 converter << next_index_left;
1077 output_buffer.append(converter.str());
1080 output_buffer.append(
"\n");
1081 output_buffer.append(next_data_left);
1092 if (next_index_left< next_index_right) {
1093 converter << next_index_left;
1094 output_buffer.append(converter.str());
1097 output_buffer.append(
"\n");
1098 output_buffer.append(next_data_left);
1099 next_read_left =
true;
1100 next_read_right =
false;
1103 converter << next_index_right;
1104 output_buffer.append(converter.str());
1107 output_buffer.append(
"\n");
1108 output_buffer.append(next_data_right);
1109 next_read_left =
false;
1110 next_read_right =
true;
1115 if (output_buffer.size()>67108864) {
1117 outputfile << output_buffer;
1129 if (keep_going_left) {
1133 if (keep_going_right) {
1140 outputfile << output_buffer;
1153 std::ofstream & outputfile, std::vector < boost::filesystem::path > filelist,
1154 int file_index,
int parser_index)
1157 std::stringstream converter;
1158 std::string next_data =
"";
1163 converter << next_index <<
"\n";
1164 output_buffer.append(converter.str());
1167 output_buffer.append(next_data);
1170 if (output_buffer.size()>67108864){
1171 outputfile << output_buffer;
1180 for (
int ii=file_index+1; ii < int(filelist.size()); ++ii) {
1182 datafile.open(filelist[ii].c_str());
1183 getline(datafile,tmpstr);
1186 converter << next_index <<
"\n";
1187 output_buffer.append(converter.str());
1190 output_buffer.append(next_data);
1193 if (output_buffer.size()>67108864){
1194 outputfile << output_buffer;
1210 if (file_index+1>
int(filelist.size())) {
1214 std::cout <<
"opening " << filelist[file_index] << std::endl;
1215 datafile.open(filelist[file_index].c_str());
1217 if (!datafile.is_open()) {
1218 std::cerr <<
"failed to open " << filelist[file_index] <<
" to read for data" << std::endl;
1221 getline(datafile,tmpstr);
1231 std::stringstream converter;
1236 switch (parser_index) {
1246 std::cerr <<
"invalid parser index " << parser_index << std::endl;
1263 std::stringstream converter;
1265 getline(fin, tmpstr);
1269 converter << tmpstr;
1270 converter >> next_index;
1276 switch (parser_index) {
1286 std::cerr <<
"invalid parser index " << parser_index << std::endl;
1304 int number_of_solutions;
1305 std::stringstream converter;
1310 std::vector< std::vector < std::pair< std::string, std::string > > > solutions;
1314 getline(fin,tmpstr);
1315 converter << tmpstr;
1316 converter >> number_of_solutions;
1318 converter.clear(); converter.str(
"");
1321 getline(fin,tmpstr);
1324 for (
int solution_counter = 0; solution_counter < number_of_solutions; ++solution_counter) {
1325 std::vector < std::pair< std::string, std::string > > temporary_solution;
1328 for (
int variable_counter = 0; variable_counter < this->
numvariables; ++variable_counter) {
1329 std::pair < std::string, std::string > temporary_coordinates;
1331 getline(fin,tmpstr);
1332 converter << tmpstr;
1334 converter >> temporary_coordinates.first;
1335 converter >> temporary_coordinates.second;
1336 temporary_solution.push_back(temporary_coordinates);
1337 converter.clear(); converter.str(
"");
1341 solutions.push_back(temporary_solution);
1343 getline(fin,tmpstr);
1359 std::stringstream converter;
1360 std::stringstream solutions_file;
1362 int number_of_solutions;
1363 if (!getline(fin,tmpstr)){
1371 converter << tmpstr;
1372 converter >> number_of_solutions;
1375 solutions_file << tmpstr <<
"\n";
1376 getline(fin,tmpstr);
1377 solutions_file << tmpstr <<
"\n";
1380 for (
int solution_counter = 0; solution_counter < number_of_solutions; ++solution_counter) {
1382 for (
int variable_counter = 0; variable_counter < this->
numvariables; ++variable_counter) {
1383 std::pair < std::string, std::string > temporary_coordinates;
1385 getline(fin,tmpstr);
1386 solutions_file << tmpstr <<
"\n";
1391 getline(fin,tmpstr);
1392 solutions_file << tmpstr <<
"\n";
1398 return solutions_file.str();
1406 int tempfailnum = 0;
1409 std::stringstream faily_mcfailfail;
1413 getline(fin,tmpstr);
1414 faily_mcfailfail << tmpstr <<
"\n";
1415 if (tmpstr.length()==0) {
1420 getline(fin,tmpstr);
1421 faily_mcfailfail << tmpstr <<
"\n";
1426 return faily_mcfailfail.str();
1434 boost::filesystem::path base_output_folder_name,
int & output_folder_index)
1436 std::stringstream converter;
1438 output_folder_index = (output_folder_index+1);
1439 output_folder_name = base_output_folder_name;
1440 output_folder_name /=
"tmp";
1441 converter << output_folder_index;
1442 output_folder_name += converter.str();
1454 std::vector< boost::filesystem::path > foldervector;
1458 boost::filesystem::path foldername = dir;
1459 foldername /=
"folders";
1460 std::ifstream folderstream;
1461 folderstream.open(foldername.c_str());
1463 if (!folderstream.is_open()) {
1464 std::cerr <<
"failed to open file to read folders " << foldername.string() << std::endl;
1470 while (getline(folderstream,tmpstr)) {
1471 foldervector.push_back(boost::filesystem::path(tmpstr));
1473 folderstream.close();
1476 return foldervector;
1485 std::stringstream menu;
1487 menu <<
"\n\nData Management Options\n\n"
1488 <<
"1) Change Run Folder\n"
1489 <<
"2) Gather Data\n"
1514 std::cout <<
"somehow an unacceptable entry submitted :(\n";
void MergeFolders(std::string file_to_gather, boost::filesystem::path left_folder, boost::filesystem::path right_folder, boost::filesystem::path output_folder_name, int parser_index)
std::map< int, point > ReadSuccessfulResolves()
std::vector< int > gather_parser_indices
bool ReadPoint(std::ifstream &fin, std::string &data, int parser_index)
void GatherDataFromMenu()
boost::filesystem::path base_dir
std::vector< point > GatherFinalizedDataToMemory(boost::filesystem::path folder_with_data)
std::map< std::string, fileinfo > slavemap
boost::filesystem::path DataCollectedbase_dir
std::vector< std::string > ParamNames
boost::filesystem::path GetAvailableRuns()
boost::filesystem::path fundamental_dir
std::string real_filename
std::vector< boost::filesystem::path > GetFoldersForData(boost::filesystem::path dir)
std::vector< boost::filesystem::path > FindDirectories(boost::filesystem::path, std::string expression)
void AppendOnlyPosReal(std::string orig_filename, double *current_params, ProgSettings ¶motopy_settings)
Class containing parameter values, index, and collected data.
bool TestIfFinished(boost::filesystem::path &path_to_check)
std::vector< std::string > gather_savefiles
std::vector< boost::filesystem::path > FindFiles(boost::filesystem::path dir, std::string expression)
bool GatherDataForFails(std::vector< point > terminal_fails, std::vector< point > &successful_resolves)
std::string ParseFailedPaths(std::ifstream &fin)
the parser for the failed_paths file type, which is output from bertini.
void rest_of_files(std::ifstream &datafile, std::string &output_buffer, std::ofstream &outputfile, std::vector< boost::filesystem::path > filelist, int file_index, int parser_index)
std::vector< point > CompareInitial_Gathered(std::vector< point > terminal_fails, std::vector< point > current_data)
boost::filesystem::path MakeTargetFilename(std::string filename)
std::vector< std::vector< std::pair< std::string, std::string > > > ParseSolutionsFile_ActualSolutions(std::ifstream &fin)
bool SlaveCollectAndWriteData(double *current_params, ProgSettings ¶motopy_settings, timer &process_timer)
void CollectSpecificFiles(std::string file_to_gather, std::vector< boost::filesystem::path > folders_with_data, boost::filesystem::path run_to_analyze, int parser_index, bool mergefailed)
int get_int_choice(std::string display_string, int min_value, int max_value)
void WriteData(std::string outstring, boost::filesystem::path target_file)
void IncrementOutputFolder(boost::filesystem::path &output_folder_name, boost::filesystem::path base_output_folder_name, int &output_folder_index)
void GetFilesToParse(boost::filesystem::path run_to_analyze, std::vector< std::string > &gather_savefiles, std::vector< int > &gather_parser_indices)
boost::filesystem::path base_dir
bool endoffile_stuff(std::ifstream &datafile, int &file_index, std::vector< boost::filesystem::path > filelist)
void SlaveSetup(ProgSettings ¶motopy_settings, runinfo ¶motopy_info, int myid, boost::filesystem::path called_dir)
void DataManagementMainMenu(runinfo ¶motopy_info)
void add_file_to_save(std::string filename)
std::string ParseSolutionsFile(std::ifstream &fin)
void CheckForResolvedFailedPoint(std::string file_to_gather, int next_index, std::string &next_data, std::map< int, point > successful_resolves)
std::vector< std::string > ParameterNames
std::map< std::string, std::string > collected_data
boost::filesystem::path location
void finalize_run_to_file(std::string file_to_gather, boost::filesystem::path source_folder, boost::filesystem::path base_output_folder_name, int parser_index, bool mergefailed)
Class for gathering data, from failed path analysis, and from completed runs.
void WriteUnsuccessfulResolves(std::map< int, point > successful_resolves)
void add_time(const std::string timer_name)
A class that stores the general program settings of Paramotopy.
A class for the input file parser.
void AppendData(std::string orig_filename, double *current_params)
boost::filesystem::path fundamental_dir
void press_start(const std::string timer_name)
Capable of timing arbitrary categories of processes, using a map of timer_data's. ...
boost::filesystem::path run_to_analyze