librcsb-core-wrapper  1.000
CifCorrector.h
Go to the documentation of this file.
1 //$$FILE$$
2 //$$VERSION$$
3 //$$DATE$$
4 //$$LICENSE$$
5 
6 
14 #ifndef CIFCORRECTOR_H
15 #define CIFCORRECTOR_H
16 
17 
18 #include <string>
19 #include <vector>
20 
21 #include <rcsb/DataInfo.h>
22 #include <rcsb/CifFile.h>
23 
24 
26 {
27  public:
28  static void MakeOutputCifFileName(std::string& outCifFileName,
29  const std::string& inCifFileName);
30  static CifFile* CreateConfigFile();
31 
32  CifCorrector(CifFile& cifFile, DataInfo& dataInfo, DataInfo& pdbxDataInfo,
33  CifFile& configFile, const bool verbose = false);
34  ~CifCorrector();
35 
36  void Correct();
37  void CheckAliases();
38 
39  void Write(const std::string& outFileName);
40 
41  static void CorrectEnumsSimple(CifFile& cifFile, DataInfo& dataInfo,
42  const bool verbose = false);
43 
44  private:
45  CifFile& _cifFile;
46 
47  DataInfo& _dataInfo;
48  DataInfo& _pdbxDataInfo;
49 
50  CifFile& _configFile;
51 
52  bool _verbose;
53 
54  ISTable* _configTableP;
55 
56  void ValidateConfigTable();
57 
58  void RemoveItem(const std::string& item);
59  void CorrectUpperCase(const std::string& item);
60  void RenameItem(const std::string& item, const std::string& refItem);
61  void CorrectValues(const std::string& item, const std::string& itemValue,
62  const std::string& refItemValue);
63  void CorrectEnums();
64  void CorrectNumericList(const std::string& item);
65  void CorrectNotApplicableValues();
66  void CorrectMissingValues(const std::string& item,
67  const std::string& refItem);
68  void CorrectLabeling(const std::string& item,
69  const std::string& refItem);
70  void CorrectBadSequence(const std::string& item,
71  const std::string& refCondItem, const std::string& refCondItemValue);
72 
73  static unsigned int FindEnumIndex(const std::string& value,
74  const std::vector<std::string>& enums);
75  void FixNumericList(std::string& outValue, const std::string& inValue);
76  void FixNotApplicable(std::string& outValue, const std::string& inValue);
77  void FixBadSequence(std::vector<std::string>& outValues,
78  std::vector<std::pair<std::vector<std::string>,
79  std::vector<std::string> > >& refMap,
80  std::vector<std::vector<std::string> >& confRefValues, Block& block,
81  const unsigned int numRows);
82 
83  void GetSrcValues(vector<string>& srcValues,
84  const vector<string>& srcItems, const vector<string>& prevRefItems,
85  const vector<string>& confValues, Block& block,
86  const unsigned int rowIndex);
87 
88  void GetRefValues(std::vector<std::string>& refValues,
89  const std::vector<std::string>& srcItems,
90  const std::vector<std::string>& srcValues,
91  const std::vector<std::string>& refItems, Block& block);
92  void GetTableValues(vector<string>& values, const vector<string>& items,
93  Block& block, const unsigned int rowIndex);
94 
95 
96  void CreateRefMap(std::vector<std::pair<std::vector<std::string>,
97  std::vector<std::string> > >& refMap, const std::string& refCondItem);
98  void ExtractRefValues(std::vector<std::vector<std::string> >& refValues,
99  const std::string& refCondItemValue);
100 
101  void GetValuesFromSeparatedString(vector<string>& values,
102  const std::string& valueString, const std::string& sep);
103  void NumberToLetter(char& letter, const unsigned int number);
104 };
105 
106 
107 #endif