Changeset 9445081 for src/Fragmentation
- Timestamp:
- Nov 4, 2016, 9:37:51 AM (8 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_StructOpt_integration_tests, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, 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_ChronosMutex, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, GeometryObjects, Gui_displays_atomic_force_velocity, IndependentFragmentGrids_IntegrationTest, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, RotateToPrincipalAxisSystem_UndoRedo, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, ThirdParty_MPQC_rebuilt_buildsystem, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, Ubuntu_1604_changes, stable
- Children:
- ea63cb
- Parents:
- 041a79
- git-author:
- Frederik Heber <heber@…> (10/04/16 08:06:18)
- git-committer:
- Frederik Heber <heber@…> (11/04/16 09:37:51)
- Location:
- src/Fragmentation
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Automation/FragmentJobQueue.cpp
r041a79 r9445081 51 51 #include "LinearAlgebra/RealSpaceMatrix.hpp" 52 52 #include "World.hpp" 53 54 53 55 54 void FragmentJobQueue::parsejob(const std::string &filename, const unsigned int level) … … 132 131 } 133 132 133 bool FragmentJobQueue::addEdgesPerFragmentFromFiles( 134 const boost::filesystem::path &path 135 ) 136 { 137 ASSERT(0, 138 "FragmentJobQueue::addFullKeySetsFromFiles() - is not implemented, yet."); 139 return false; 140 } 141 134 142 void FragmentJobQueue::clear() 135 143 { … … 137 145 KeySets.clear(); 138 146 FullKeySets.clear(); 147 edges_per_fragment.clear(); 139 148 } 140 149 -
src/Fragmentation/Automation/FragmentJobQueue.hpp
r041a79 r9445081 20 20 #include "CodePatterns/Singleton.hpp" 21 21 22 #include "Fragmentation/EdgesPerFragment.hpp" 22 23 #include "Fragmentation/KeySetsContainer.hpp" 23 24 #include "Fragmentation/parseKeySetFile.hpp" 24 25 #include "Jobs/MPQCJob.hpp" 26 #include "types.hpp" 25 27 26 28 /** FragmentJobQueue is a static instance to contain all present fragment … … 45 47 46 48 public: 49 typedef FragmentationEdges::edges_per_fragment_t edges_per_fragment_t; 47 50 48 51 /** Pushes a vector of jobs into the queue. 49 52 * 50 53 * \param _jobs new jobs to push 51 * \param KeySet KeySet of all (non-hydrogen) atoms 52 * \param FullKeySet KeySet of all atoms except saturation hydrogens 54 * \param _KeySet KeySet of all (non-hydrogen) atoms 55 * \param _FullKeySet KeySet of all atoms except saturation hydrogens 56 * \param _edges_per_fragment edges of bond graph of all fragments 53 57 */ 54 58 void addJobs( 55 59 std::vector<FragmentJob::ptr> &_jobs, 56 60 const KeySetsContainer &_KeySets, 57 const KeySetsContainer &_FullKeySets); 61 const KeySetsContainer &_FullKeySets, 62 const edges_per_fragment_t &_edges_per_fragment); 58 63 59 64 /** Returns ref to jobs. … … 96 101 ); 97 102 103 /** Adds edges after fragments have been added by file. 104 * 105 */ 106 bool addEdgesPerFragmentFromFiles( 107 const boost::filesystem::path &path 108 ); 109 98 110 /** Getter for the container of all KeySets to the jobs. 99 111 * … … 107 119 */ 108 120 const KeySetsContainer& getFullKeySets() const { return FullKeySets; } 121 122 /** Getter for the container of all edges of the bond graph over all jobs. 123 * 124 * \return const ref to container 125 */ 126 const edges_per_fragment_t& getEdgesPerFragment() const { return edges_per_fragment; } 109 127 110 128 /* Empties contained jobs and all KeySets. … … 130 148 //!> container for all KeySet's with all except saturation hydrogen to the jobs 131 149 KeySetsContainer FullKeySets; 150 //!> container for all edges of the bond graph of each fragments 151 edges_per_fragment_t edges_per_fragment; 132 152 }; 133 153 … … 136 156 std::vector<FragmentJob::ptr> &_jobs, 137 157 const KeySetsContainer &_KeySets, 138 const KeySetsContainer &_FullKeySets) 158 const KeySetsContainer &_FullKeySets, 159 const edges_per_fragment_t &_edges_per_fragment) 139 160 { 140 161 jobs.insert(jobs.end(), _jobs.begin(), _jobs.end()); 141 162 KeySets.insert(_KeySets); 142 163 FullKeySets.insert(_FullKeySets); 164 edges_per_fragment.reserve(edges_per_fragment.size()+_edges_per_fragment.size()); 165 edges_per_fragment.insert( 166 edges_per_fragment.end(), 167 _edges_per_fragment.begin(), _edges_per_fragment.end()); 143 168 } 144 169 -
src/Fragmentation/Exporters/ExportGraph_ToJobs.cpp
r041a79 r9445081 227 227 KeySetsContainer KeySets; 228 228 KeySetsContainer FullKeySets; 229 FragmentJobQueue::edges_per_fragment_t edges_per_fragment; 229 230 jobs.reserve(TotalGraph.size()); 230 231 LOG(1, "INFO: Creating " << TotalGraph.size() << " possible bond fragmentation jobs."); … … 255 256 const KeySet &set = CurrentFragment->getKeySet(); 256 257 LOG(2, "INFO: Creating bond fragment job for set " << set << "."); 258 259 // gather all edges 260 FragmentationEdges::edges_t edges = CurrentFragment->getEdges(); 257 261 258 262 SamplingGridProperties fragment_window(grid); … … 315 319 KeySets.insert(indices, order); 316 320 FullKeySets.insert(forceindices, order); 321 edges_per_fragment.push_back(edges); 317 322 } 318 323 // store force index reference file … … 326 331 327 332 // push final jobs 328 FragmentJobQueue::getInstance().addJobs(jobs, KeySets, FullKeySets );333 FragmentJobQueue::getInstance().addJobs(jobs, KeySets, FullKeySets, edges_per_fragment); 329 334 330 335 return true; -
src/Fragmentation/Exporters/SaturatedFragment.cpp
r041a79 r9445081 667 667 return std::make_pair(minimum, maximum); 668 668 } 669 670 static FragmentationEdges::edges_t createEdgesFromAtoms( 671 const std::vector<atom *> &_atoms, 672 const KeySet &_FullMolecule) 673 { 674 FragmentationEdges::edges_t edges; 675 for (std::vector<atom *>::const_iterator iter = _atoms.begin(); 676 iter != _atoms.end(); ++iter) { 677 const atom * const walker = *iter; 678 const atomId_t &walkerid = walker->getId(); 679 const BondList &ListOfBonds = walker->getListOfBonds(); 680 for (BondList::const_iterator bonditer = ListOfBonds.begin(); 681 bonditer != ListOfBonds.end(); ++bonditer) { 682 const atom * const OtherWalker = (*bonditer)->GetOtherAtom(walker); 683 const atomId_t &otherwalkerid = OtherWalker->getId(); 684 if (walkerid < otherwalkerid) { 685 // check if it's in fullkeysets (also contains excluded and saturation hydrogens) 686 if (_FullMolecule.count(otherwalkerid)) 687 edges.push_back( FragmentationEdges::edge_t(walkerid, otherwalkerid) ); 688 } 689 } 690 } 691 return edges; 692 } 693 694 typedef std::map<atomId_t, atomId_t> idtable_t; 695 696 static idtable_t createIdTable( 697 const std::vector<atom *> &_atoms) 698 { 699 idtable_t idtable; 700 atomId_t newid = 0; 701 for (std::vector<atom *>::const_iterator iter = _atoms.begin(); 702 iter != _atoms.end(); ++iter) { 703 const atom * const walker = *iter; 704 const atomId_t &walkerid = walker->getId(); 705 idtable.insert( std::make_pair(walkerid, newid++) ); 706 } 707 return idtable; 708 } 709 710 static atomId_t getTranslatedId( 711 const idtable_t &_idtable, 712 const atomId_t &_id 713 ) 714 { 715 idtable_t::const_iterator iter = _idtable.find(_id); 716 if (iter != _idtable.end()) 717 return iter->second; 718 else { 719 ASSERT( 0, 720 "getTranslatedId() - idtable does not contain id in FullMolecule?"); 721 return (atomId_t)-1; 722 } 723 } 724 725 static void rewriteEdgeIndices( 726 FragmentationEdges::edges_t &_edges, 727 const idtable_t &_idtable) 728 { 729 for (FragmentationEdges::edges_t::iterator edgeiter = _edges.begin(); 730 edgeiter != _edges.end(); ++edgeiter) { 731 FragmentationEdges::edge_t &edge = *edgeiter; 732 edge.first = getTranslatedId(_idtable, edge.first); 733 edge.second = getTranslatedId(_idtable, edge.second); 734 } 735 } 736 737 FragmentationEdges::edges_t SaturatedFragment::getEdges() const 738 { 739 // gather all edges 740 const std::vector<atom *> atoms = gatherAllAtoms(FullMolecule); 741 FragmentationEdges::edges_t edges = createEdgesFromAtoms(atoms, FullMolecule); 742 743 // translate each edge 744 std::map<atomId_t, atomId_t> idtable = createIdTable(atoms); 745 746 // rewrite indices of edges in correct order 747 rewriteEdgeIndices(edges, idtable); 748 749 // for debugging output edges 750 LOG(2, "DEBUG: FullMolecule is : " << FullMolecule << " with edges " << edges); 751 752 return edges; 753 } -
src/Fragmentation/Exporters/SaturatedFragment.hpp
r041a79 r9445081 20 20 #include "Atom/atom_bondedparticleinfo.hpp" 21 21 #include "Bond/bond.hpp" 22 #include "Fragmentation/EdgesPerFragment.hpp" 22 23 #include "Fragmentation/KeySet.hpp" 23 24 #include "Fragmentation/HydrogenSaturation_enum.hpp" … … 106 107 */ 107 108 std::pair<Vector, Vector> getRoughBoundingBox() const; 109 110 /** Returns the edges of the bond graph of this fragment. 111 * 112 * \return set of edges 113 */ 114 FragmentationEdges::edges_t getEdges() const; 108 115 109 116 /** Prints the config of the fragment of \a _type to \a out.
Note:
See TracChangeset
for help on using the changeset viewer.