Ignore:
Timestamp:
Dec 14, 2012, 5:39:40 PM (12 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
07266b
Parents:
37ce5d
git-author:
Frederik Heber <heber@…> (09/27/12 14:42:38)
git-committer:
Frederik Heber <heber@…> (12/14/12 17:39:40)
Message:

FragmentationAutomationAction now uses a file containing a serialized HomologyContainer.

  • the idea is that we append the calculated keysets als HomologyGraphs to the instance that is afterwards again serialized to file.
  • so far, we do not yet create the graphs, we only parse the file and write again the instance.
  • new parameter "homology-file".
Location:
src/Actions/FragmentationAction
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/FragmentationAction/FragmentationAutomationAction.cpp

    r37ce5d r240c3e  
    3939#include "CodePatterns/MemDebug.hpp"
    4040
     41// include headers that implement a archive in simple text format
     42#include <boost/archive/text_oarchive.hpp>
     43#include <boost/archive/text_iarchive.hpp>
     44
     45
    4146#include <boost/mpl/remove.hpp>
    4247#include <boost/lambda/lambda.hpp>
     48
     49#include <iostream>
    4350
    4451#include "CodePatterns/Assert.hpp"
     
    5764#include "Fragmentation/ForceMatrix.hpp"
    5865#include "Fragmentation/Fragmentation.hpp"
     66#include "Fragmentation/Homology/HomologyContainer.hpp"
     67#include "Fragmentation/Homology/HomologyGraph.hpp"
    5968#include "Fragmentation/SetValues/Fragment.hpp"
    6069#include "Fragmentation/SetValues/Histogram.hpp"
     
    379388}
    380389
     390bool appendToHomologyFile(const boost::filesystem::path &homology_file)
     391{
     392  // read homology container (if present)
     393  HomologyContainer homology_container;
     394  if (boost::filesystem::exists(homology_file)) {
     395    std::ifstream returnstream(homology_file.string().c_str());
     396    if (returnstream.good()) {
     397      boost::archive::text_iarchive ia(returnstream);
     398      ia >> homology_container;
     399    } else {
     400      ELOG(2, "Failed to parse from " << homology_file.string() << ".");
     401    }
     402    returnstream.close();
     403  } else {
     404    LOG(2, "Could not open " << homology_file.string()
     405        << ", creating empty container.");
     406  }
     407
     408  // append all fragments to a HomologyContainer
     409  HomologyContainer::container_t values;
     410  // TODO: prepare HomologyGraphs ...
     411  homology_container.insert(values);
     412
     413  // store homology container again
     414  std::ofstream outputstream(homology_file.string().c_str());
     415  if (outputstream.fail()) { // check if opened
     416    boost::archive::text_oarchive oa(outputstream);
     417    oa << homology_container;
     418    if (outputstream.fail()) { // check if correctly written
     419      LOG(1, "Failed to write to file " << homology_file.string() << ".");
     420      return false;
     421    } else
     422      outputstream.close();
     423  } else {
     424    LOG(1, "Failed to open file " << homology_file.string()
     425        << " for writing.");
     426    return false;
     427  }
     428  return true;
     429}
    381430
    382431Action::state_ptr FragmentationFragmentationAutomationAction::performCall() {
     
    475524    LOG(1, "INFO: Parsing fragment files from " << params.path.get() << ".");
    476525    printReceivedFullResults(results);
     526  }
     527
     528  // append all keysets to homology file
     529  if (Exitflag != 0) {
     530    const boost::filesystem::path &homology_file = params.homology_file.get();
     531    if (!appendToHomologyFile(homology_file))
     532      Exitflag = 1;
    477533  }
    478534
  • src/Actions/FragmentationAction/FragmentationAutomationAction.def

    r37ce5d r240c3e  
    2121// ValueStorage by the token "Z" -> first column: int, Z, "Z"
    2222// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
    23 #define paramtypes (std::vector< boost::filesystem::path >)(std::string)(std::string)(std::string)(boost::filesystem::path)(unsigned int)(unsigned int)(unsigned int)(bool)
    24 #define paramtokens ("fragment-jobs")("fragment-path")("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("interpolation-degree")("DoLongrange")
    25 #define paramdescriptions ("vector of fragment files")("prefix of each fragment file")("hostname of server")("controller port of server")("executable to launch on clients")("resolution of multigrid")("number of cells used in smearing out core charge")("interpolation degree for getting the nuclei potential from the grid")("whether to calculate long-range contributions")
    26 #define paramdefaults (NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(PARAM_DEFAULT("127.0.0.1"))(PARAM_DEFAULT("1026"))(NOPARAM_DEFAULT)(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))
    27 #define paramreferences (jobfiles)(path)(host)(port)(executable)(level)(near_field_cells)(interpolation_degree)(DoLongrange)
     23#define paramtypes (std::vector< boost::filesystem::path >)(std::string)(std::string)(std::string)(boost::filesystem::path)(unsigned int)(unsigned int)(unsigned int)(bool)(boost::filesystem::path)
     24#define paramtokens ("fragment-jobs")("fragment-path")("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("interpolation-degree")("DoLongrange")("homology-file")
     25#define paramdescriptions ("vector of fragment files")("prefix of each fragment file")("hostname of server")("controller port of server")("executable to launch on clients")("resolution of multigrid")("number of cells used in smearing out core charge")("interpolation degree for getting the nuclei potential from the grid")("whether to calculate long-range contributions")("path to file containing homology containerto append to")
     26#define paramdefaults (NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(PARAM_DEFAULT("127.0.0.1"))(PARAM_DEFAULT("1026"))(NOPARAM_DEFAULT)(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))(PARAM_DEFAULT(""))
     27#define paramreferences (jobfiles)(path)(host)(port)(executable)(level)(near_field_cells)(interpolation_degree)(DoLongrange)(homology_file)
    2828#define paramvalids \
    2929(STLVectorValidator< std::vector< boost::filesystem::path > >(ParserFileValidator() && FilePresentValidator())) \
     
    3535(RangeValidator< unsigned int >(1, 20)) \
    3636(RangeValidator< unsigned int >(1, 10)) \
    37 (DummyValidator< bool >())
     37(DummyValidator< bool >()) \
     38(DummyValidator< boost::filesystem::path >())
    3839
    3940#undef statetypes
Note: See TracChangeset for help on using the changeset viewer.