source: src/Fragmentation/Fragmentation.hpp@ 4464ef

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_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_levmar Subpackage_vmg ThirdParty_MPQC_rebuilt_buildsystem TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps Ubuntu_1604_changes stable
Last change on this file since 4464ef was 0f5956, checked in by Frederik Heber <heber@…>, 8 years ago

Added "parse-state-files" option to fragment-molecule which is off by default.

  • this prevents accidental parsing of stale keysets, adjacency, or orderatsite files. These hard to find errors ever and again cause failing fragmentation because e.g. some hydrogen is suddenly in the keysets although hydrogens are excluded.
  • Property mode set to 100644
File size: 2.3 KB
Line 
1/*
2 * Fragmentation.hpp
3 *
4 * Created on: Oct 18, 2011
5 * Author: heber
6 */
7
8#ifndef FRAGMENTATION_HPP_
9#define FRAGMENTATION_HPP_
10
11
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16#include "Fragmentation/fragmentation_helpers.hpp"
17#include "Fragmentation/Graph.hpp"
18#include "Fragmentation/HydrogenSaturation_enum.hpp"
19#include "Graph/ListOfLocalAtoms.hpp"
20#include "types.hpp"
21
22#include <map>
23#include <string>
24#include <vector>
25
26#include <boost/bimap.hpp>
27
28class atom;
29class AtomMask_t;
30class AdjacencyList;
31class KeySet;
32class molecule;
33
34class Fragmentation
35{
36 // some typedefs for intermediat global id <-> local id bimap
37 typedef atomId_t global_t;
38 typedef atomId_t local_t;
39 typedef boost::bimap< global_t, local_t > Global_local_bimap_t;
40 typedef Global_local_bimap_t::value_type idpair_t;
41public:
42 Fragmentation(
43 molecule *_mol,
44 AdjacencyList &_FileChecker,
45 const enum HydrogenTreatment _treatment);
46 ~Fragmentation();
47
48 int FragmentMolecule(const std::vector<atomId_t> &atomids, int Order, const std::string &prefix, const Graph &ParsedFragmentList, const bool _ParseStateFile);
49
50 const Graph& getGraph() const {
51 return TotalGraph;
52 }
53
54private:
55
56 void FragmentBOSSANOVA(molecule *mol, Graph &FragmentList, KeyStack &RootStack);
57 int GuesstimateFragmentCount(int order);
58
59 // order at site
60 bool CheckOrderAtSite(AtomMask_t &AtomMask, const Graph &GlobalKeySetList, int Order, const std::string &path, bool LoopDoneAlready);
61 bool StoreOrderAtSiteFile(const std::string &path);
62 bool ParseOrderAtSiteFromFile(const std::vector<atomId_t> &atomids, const std::string &path, const Global_local_bimap_t &global_local_bimap);
63
64 // storing fragments
65 void FillRootStackForSubgraphs(KeyStack &RootStack, const AtomMask_t &AtomMask);
66 bool AssignKeySetsToFragment(const Graph &KeySetList, ListOfLocalAtoms_t &ListOfLocalAtoms, Graph &FragmentList, bool FreeList = false);
67 void TranslateIndicesToGlobalIDs(Graph &FragmentList, int &TotalNumberOfKeySets, Graph &TotalGraph);
68
69private:
70 //!> pointer to molecule that is fragmented
71 molecule *mol;
72 //!> whether to treat hydrogen special
73 const enum HydrogenTreatment treatment;
74 //!> reference to an external adjacency for comparison
75 AdjacencyList &FileChecker;
76 //!> Resulting Graph with all keysets
77 Graph TotalGraph;
78};
79
80
81#endif /* FRAGMENTATION_HPP_ */
Note: See TracBrowser for help on using the repository browser.