Changeset dde8ec for src


Ignore:
Timestamp:
Nov 12, 2012, 4:04:54 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:
e06820
Parents:
1f66c7
git-author:
Frederik Heber <heber@…> (07/29/12 17:53:39)
git-committer:
Frederik Heber <heber@…> (11/12/12 16:04:54)
Message:

Histograms are now summed up, too.

  • added Histogram cstor that just takes vector<double>.
  • extracted Histogram::getMinMaxFromSamples().
  • aded energy_eigenvalues key to MPQCDataEnergyVector_t.
Location:
src
Files:
4 edited

Legend:

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

    r1f66c7 rdde8ec  
    298298      boost::fusion::at_key<MPQCDataFused::energy_kinetic>(instance) = extractedData.energies.kinetic;
    299299      boost::fusion::at_key<MPQCDataFused::energy_hcore>(instance) = extractedData.energies.hcore;
    300   //    boost::fusion::at_key<MPQCDataFused::energy_eigenvalues>(instance) = extractedData.energies.eigenvalues;
     300      boost::fusion::at_key<MPQCDataFused::energy_eigenvalues>(instance) = extractedData.energies.eigenvalues;
    301301      MPQCData_Energy_fused.push_back(instance);
    302302    }
     
    343343            MatrixNrLookup)
    344344        );
    345     // TODO: Histogram still needs cstor taking just vector<double>
    346 
    347345
    348346    // TODO: We need to put forces into specific class and implement operators
  • src/Fragmentation/Histogram/Histogram.cpp

    r1f66c7 rdde8ec  
    9898}
    9999
     100Histogram::Histogram(const samples_t &samples) :
     101  binwidth(0.5),
     102  offset(0.)
     103{
     104  if (!samples.empty()) {
     105    // set offset to first value
     106    const_cast<BinLowerEnd &>(offset) = *samples.begin();
     107    // set binwidth to statistical sensible value
     108    MinMax_t MinMax = getMinMaxFromSamples(samples);
     109    const_cast<double &>(binwidth) = (*(MinMax.second) - *(MinMax.first))/pow(samples.size(), 1./3.);
     110    // and add all samples to these histogram bins
     111    addSamples(samples);
     112  }
     113}
    100114
    101115Histogram::Histogram(const samples_t &samples, const BinLowerEnd _offset, const double _binwidth) :
     
    106120}
    107121
     122Histogram::MinMax_t Histogram::getMinMaxFromSamples(const samples_t &samples) const
     123{
     124  std::pair<samples_t::const_iterator, samples_t::const_iterator> returnpair;
     125  returnpair.first = min_element(samples.begin(), samples.end());
     126  returnpair.second = max_element(samples.begin(), samples.end());
     127  ASSERT((returnpair.second != samples.end()) || (returnpair.first != samples.end()),
     128      "Histogram::Histogram() - cannot find min/max despite non-empty range.");
     129  return returnpair;
     130}
     131
    108132void Histogram::addSamples(const samples_t &samples)
    109133{
     
    111135  if (!samples.empty()) {
    112136    // 1. get min and max and determine width
    113     samples_t::const_iterator maxiter = max_element(samples.begin(), samples.end());
    114     samples_t::const_iterator miniter = min_element(samples.begin(), samples.end());
    115     ASSERT((maxiter != samples.end()) || (miniter != samples.end()),
    116         "Histogram::Histogram() - cannot find min/max despite non-empty range.");
    117 //    LOG(1, "DEBUG: min is " << *miniter << " and max is " << *maxiter << ".");
     137    MinMax_t MinMax = getMinMaxFromSamples(samples);
     138//    LOG(1, "DEBUG: min is " << *(MinMax.first) << " and max is " << *(MinMax.second) << ".");
    118139
    119140    // 2. create each bin
    120141    {
    121142      std::vector<Bin_t> vectorbins;
    122       BinCreator_t BinCreator( getLowerEnd(*miniter), binwidth );
     143      const BinLowerEnd HistogramStart = getLowerEnd(*(MinMax.first));
     144      BinCreator_t BinCreator( HistogramStart, binwidth );
    123145      // we need one extra bin for get...Bin()'s find to work properly
    124       const int CountBins = ceil((*maxiter - getLowerEnd(*miniter))/binwidth)+1;
     146      const int CountBins = ceil((*(MinMax.second) - HistogramStart)/binwidth)+1;
    125147      vectorbins.resize(CountBins+1, Bin_t( make_pair(0., 0.) ) );
    126148      std::generate( vectorbins.begin(), vectorbins.end(), BinCreator );
  • src/Fragmentation/Histogram/Histogram.hpp

    r1f66c7 rdde8ec  
    4949  typedef std::map< BinLowerEnd, BinWeight > Bins_t;
    5050public:
     51  /** Cpnstructor from a given set of sampled data.
     52   *
     53   * \param samples sampled data to construct histogram from
     54   */
     55  Histogram(const samples_t &samples);
     56
     57  /** Default constructor.
     58   *
     59   */
    5160  Histogram() :
    5261    binwidth(0.5),
     
    165174   */
    166175  std::string printBins() const;
     176
     177  //!> pair for min and max of given samples
     178  typedef std::pair<samples_t::const_iterator, samples_t::const_iterator> MinMax_t;
     179
     180  /** Helper function that returns minimum and maximum in given \a samples
     181   *
     182   * @param samples sampled values
     183   * @return pair of min and max value
     184   */
     185  MinMax_t getMinMaxFromSamples(const samples_t &samples) const;
    167186
    168187private:
  • src/Jobs/MPQCDataMap.hpp

    r1f66c7 rdde8ec  
    5151    MPQCDataFused::energy_overlap,
    5252    MPQCDataFused::energy_kinetic,
    53     MPQCDataFused::energy_hcore /*,
    54     MPQCDataFused::energy_eigenvalues */
     53    MPQCDataFused::energy_hcore,
     54    MPQCDataFused::energy_eigenvalues
    5555> MPQCDataEnergyVector_t;
    5656
Note: See TracChangeset for help on using the changeset viewer.