source: src/Fragmentation/Fragmentation.hpp@ fba720

Candidate_v1.6.1 ChemicalSpaceEvaluator TremoloParser_IncreasedPrecision
Last change on this file since fba720 was 0f5956, checked in by Frederik Heber <heber@…>, 9 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.