Changeset 55e1bc for src


Ignore:
Timestamp:
Apr 15, 2013, 6:13:22 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:
658485
Parents:
a3427f
git-author:
Frederik Heber <heber@…> (04/11/13 11:04:34)
git-committer:
Frederik Heber <heber@…> (04/15/13 18:13:22)
Message:

FragmentationResultContainer is serializable.

Location:
src
Files:
5 edited

Legend:

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

    ra3427f r55e1bc  
    283283Action::state_ptr FragmentationAnalyseFragmentationResultsAction::performCall() {
    284284
    285   // TODO: Get data and keysets from ResultsContainer
     285  // if file is given, parse from file into resultscontainer
    286286  FragmentationResultContainer& container = FragmentationResultContainer::getInstance();
     287  if (!params.resultsfile.get().empty()) {
     288    boost::filesystem::path resultsfile = params.resultsfile.get();
     289    if (boost::filesystem::exists(resultsfile)) {
     290      LOG(1, "INFO: Parsing results from " << resultsfile.string() << ".");
     291      std::ifstream returnstream(resultsfile.string().c_str());
     292      if (returnstream.good()) {
     293        boost::archive::text_iarchive ia(returnstream);
     294        ia >> container;
     295      }
     296    } else {
     297      ELOG(1, "Given file" << resultsfile.string() << " does not exist.");
     298    }
     299  }
     300
     301  // get data and keysets from ResultsContainer
    287302  const std::map<JobId_t, MPQCData> &shortrangedata = container.getShortRangeResults();
    288303  const KeySetsContainer &keysets = container.getKeySets();
    289304  const KeySetsContainer &forcekeysets = container.getForceKeySets();
    290305  const bool DoLongrange = container.areFullRangeResultsPresent();
     306
     307  if (keysets.KeySets.empty()) {
     308    ELOG(2, "There are no results in the container.");
     309    return Action::failure;
     310  }
    291311
    292312  FragmentationShortRangeResults shortrangeresults(shortrangedata, keysets, forcekeysets);
  • src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.def

    ra3427f r55e1bc  
    1010
    1111#include "Parameters/Validators/DummyValidator.hpp"
     12#include "Parameters/Validators/Specific/FilePresentValidator.hpp"
    1213
    1314// i.e. there is an integer with variable name Z that can be found in
    1415// ValueStorage by the token "Z" -> first column: int, Z, "Z"
    1516// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
    16 #define paramtypes (boost::filesystem::path)
    17 #define paramtokens ("homology-file")
    18 #define paramdescriptions ("path to file containing homology containerto append to")
    19 #define paramdefaults (PARAM_DEFAULT(""))
    20 #define paramreferences (homology_file)
     17#define paramtypes (boost::filesystem::path)(boost::filesystem::path)
     18#define paramtokens ("homology-file")("fragment-resultfile")
     19#define paramdescriptions ("path to file containing homology container to append to")("parse fragment results from the given file")
     20#define paramdefaults (PARAM_DEFAULT(""))(PARAM_DEFAULT(""))
     21#define paramreferences (homology_file)(resultsfile)
    2122#define paramvalids \
     23(DummyValidator< boost::filesystem::path >()) \
    2224(DummyValidator< boost::filesystem::path >())
    2325
  • src/Actions/FragmentationAction/FragmentationAutomationAction.cpp

    ra3427f r55e1bc  
    4040
    4141//// include headers that implement a archive in simple text format
    42 //#include <boost/archive/text_oarchive.hpp>
    43 //#include <boost/archive/text_iarchive.hpp>
     42#include <boost/archive/text_oarchive.hpp>
     43#include <boost/archive/text_iarchive.hpp>
    4444
    4545//
     
    200200  FragmentJobQueue::getInstance().clear();
    201201
     202  // if file is given, advise results container to store to file
     203  if (!params.resultsfile.get().empty()) {
     204    boost::filesystem::path resultsfile = params.resultsfile.get();
     205    std::ofstream returnstream(resultsfile.string().c_str());
     206    if (returnstream.good()) {
     207      boost::archive::text_oarchive oa(returnstream);
     208      oa << container;
     209    }
     210    Exitflag += (int)(!returnstream.good());
     211    returnstream.close();
     212  }
     213
    202214  return (Exitflag == 0) ? Action::success : Action::failure;
    203215}
  • src/Actions/FragmentationAction/FragmentationAutomationAction.def

    ra3427f r55e1bc  
    1818// ValueStorage by the token "Z" -> first column: int, Z, "Z"
    1919// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
    20 #define paramtypes (std::string)(std::string)(boost::filesystem::path)(unsigned int)(unsigned int)(unsigned int)(bool)
    21 #define paramtokens ("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("interpolation-degree")("DoLongrange")
    22 #define paramdescriptions ("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")
    23 #define paramdefaults (PARAM_DEFAULT("127.0.0.1"))(NOPARAM_DEFAULT)(PARAM_DEFAULT("mpqc"))(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))
    24 #define paramreferences (host)(port)(executable)(level)(near_field_cells)(interpolation_degree)(DoLongrange)
     20#define paramtypes (std::string)(std::string)(boost::filesystem::path)(unsigned int)(unsigned int)(unsigned int)(bool)(boost::filesystem::path)
     21#define paramtokens ("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("interpolation-degree")("DoLongrange")("fragment-resultfile")
     22#define paramdescriptions ("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")("parse fragment results from the given file")
     23#define paramdefaults (PARAM_DEFAULT("127.0.0.1"))(NOPARAM_DEFAULT)(PARAM_DEFAULT("mpqc"))(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))(PARAM_DEFAULT(""))
     24#define paramreferences (host)(port)(executable)(level)(near_field_cells)(interpolation_degree)(DoLongrange)(resultsfile)
    2525#define paramvalids \
    2626(DummyValidator< std::string >()) \
     
    3030(RangeValidator< unsigned int >(1, 20)) \
    3131(RangeValidator< unsigned int >(1, 10)) \
    32 (DummyValidator< bool >())
     32(DummyValidator< bool >()) \
     33(DummyValidator< boost::filesystem::path >())
    3334
    3435#undef statetypes
  • src/Fragmentation/Summation/Containers/FragmentationResultContainer.hpp

    ra3427f r55e1bc  
    1414#endif
    1515
     16#include <boost/serialization/access.hpp>
    1617#include "CodePatterns/Singleton.hpp"
    1718
     19#include <boost/filesystem/path.hpp>
    1820#include <map>
    1921
     
    3436 *
    3537 * The idea is that we can play around with results without having to recalculate
    36  * results in between. Hence, we serialize the FragmentResult into this
    37  * container which can also be filled from file.
     38 * results in between. Hence, we place results into this container which we may
     39 * full serialize.
    3840 */
    3941class FragmentationResultContainer: public Singleton<FragmentationResultContainer>
     
    128130  std::map<JobId_t, VMGData> longrangedata;
    129131#endif
     132
     133  friend class boost::serialization::access;
     134  // serialization
     135  template <typename Archive>
     136  void serialize(Archive& ar, const unsigned int version)
     137  {
     138    ar & ResultsType;
     139    ar & keysets;
     140    ar & forcekeysets;
     141    ar & shortrangedata;
     142#ifdef HAVE_VMG
     143    ar & longrangedata;
     144#endif
     145  }
    130146};
    131147
Note: See TracChangeset for help on using the changeset viewer.