Changeset 8aa597 for src/LevMartester.cpp
- Timestamp:
- Feb 24, 2013, 12:58:52 PM (12 years ago)
- 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:
- f68c68
- Parents:
- 355af8
- git-author:
- Frederik Heber <heber@…> (10/15/12 05:17:21)
- git-committer:
- Frederik Heber <heber@…> (02/24/13 12:58:52)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/LevMartester.cpp
r355af8 r8aa597 62 62 #include "Fragmentation/Homology/HomologyContainer.hpp" 63 63 #include "Fragmentation/SetValues/Fragment.hpp" 64 #include "FunctionApproximation/Extractors.hpp" 64 65 #include "FunctionApproximation/FunctionApproximation.hpp" 65 66 #include "FunctionApproximation/FunctionModel.hpp" … … 107 108 } 108 109 109 FunctionModel::arguments_t110 gatherAllDistanceArguments(111 const Fragment::charges_t &charges,112 const Fragment::positions_t &positions,113 const size_t globalid)114 {115 FunctionModel::arguments_t result;116 117 // go through current configuration and gather all other distances118 Fragment::charges_t::const_iterator firstchargeiter = charges.begin();119 Fragment::positions_t::const_iterator firstpositer = positions.begin();120 for (;firstchargeiter != charges.end();121 ++firstchargeiter, ++firstpositer) {122 Fragment::charges_t::const_iterator secondchargeiter = charges.begin();//firstchargeiter;123 Fragment::positions_t::const_iterator secondpositer = positions.begin();//firstpositer;124 for (;125 secondchargeiter != charges.end();126 ++secondchargeiter, ++secondpositer) {127 if (firstchargeiter == secondchargeiter)128 continue;129 argument_t arg;130 const Vector firsttemp((*firstpositer)[0],(*firstpositer)[1],(*firstpositer)[2]);131 const Vector secondtemp((*secondpositer)[0],(*secondpositer)[1],(*secondpositer)[2]);132 arg.distance = firsttemp.distance(secondtemp);133 arg.indices = std::make_pair(134 std::distance(135 charges.begin(), firstchargeiter),136 std::distance(137 charges.begin(), secondchargeiter)138 );139 arg.globalid = globalid;140 result.push_back(arg);141 }142 ASSERT( secondpositer == positions.end(),143 "gatherAllDistanceArguments() - there are not as many positions as charges.");144 }145 ASSERT( firstpositer == positions.end(),146 "gatherAllDistanceArguments() - there are not as many positions as charges.");147 148 return result;149 }150 110 151 111 /** This function returns the elements of the sum over index "k" for an … … 238 198 return angle/divisor; 239 199 } 240 241 /** Namespace containing all simple extractor functions.242 *243 */244 namespace Extractors {245 /** Simple extractor of all unique pair distances of a given \a fragment.246 *247 * \param fragment fragment with all nuclei positions248 * \param index index refers to the index within the global set of configurations249 * \return vector of of argument_t containing all found distances250 */251 FunctionModel::arguments_t gatherAllDistances(252 const Fragment& fragment,253 const size_t index254 ) {255 // get distance out of Fragment256 const Fragment::charges_t charges = fragment.getCharges();257 const Fragment::positions_t positions = fragment.getPositions();258 return gatherAllDistanceArguments(charges, positions, index);259 }260 261 /** Gather first distance for the two matching charges.262 *263 * \param fragment fragment with all nuclei positions264 * \param index index refers to the index within the global set of configurations265 * \param firstelement first element of pair266 * \param secondelement second element of pair, order is reflected in indices of return argument_t267 * \return vector of of argument_t containing all found distances268 */269 FunctionModel::arguments_t gatherFirstDistance(270 const Fragment& fragment,271 const size_t index,272 const size_t firstelement,273 const size_t secondelement274 ) {275 const Fragment::charges_t charges = fragment.getCharges();276 const Fragment::positions_t positions = fragment.getPositions();277 typedef Fragment::charges_t::const_iterator chargeiter_t;278 std::vector< chargeiter_t > firstpair;279 firstpair.reserve(2);280 firstpair +=281 std::find(charges.begin(), charges.end(), firstelement),282 std::find(charges.begin(), charges.end(), secondelement);283 if ((firstpair[0] == charges.end()) || (firstpair[1] == charges.end())) {284 // complain if tuple not found285 ELOG(1, "Could not find pair " << firstelement << "," << secondelement286 << " in fragment " << fragment);287 return FunctionModel::arguments_t();288 }289 // convert position_t to Vector290 std::vector< std::pair<Vector, size_t> > DistancePair;291 for (std::vector<chargeiter_t>::const_iterator firstpairiter = firstpair.begin();292 firstpairiter != firstpair.end(); ++firstpairiter) {293 Fragment::positions_t::const_iterator positer = positions.begin();294 const size_t steps = std::distance(charges.begin(), *firstpairiter);295 std::advance(positer, steps);296 DistancePair.push_back(297 std::make_pair(Vector((*positer)[0], (*positer)[1], (*positer)[2]),298 steps));299 }300 // finally convert Vector pair to distance-like argument301 argument_t arg;302 arg.indices.first = DistancePair[0].second;303 arg.indices.second = DistancePair[1].second;304 arg.distance = DistancePair[0].first.distance(DistancePair[1].first);305 arg.globalid = index;306 307 return FunctionModel::arguments_t(1, arg);308 }309 310 }; /* namespace Extractors */311 200 312 201 /** This class encapsulates the training data for a given potential function … … 633 522 const Fragment::positions_t positions = fragment.getPositions(); 634 523 FunctionModel::arguments_t args = 635 gatherAllDistanceArguments(charges,positions, DistanceEnergyVector.first.size());524 Extractors::_detail::gatherAllDistanceArguments(positions, DistanceEnergyVector.first.size()); 636 525 DistanceEnergyVector.first.push_back( args ); 637 526 DistanceEnergyVector.second.push_back( FunctionModel::results_t(1,energy-EnergySum) );
Note:
See TracChangeset
for help on using the changeset viewer.