1 //
2 //  biom.hpp
3 //  Mothur
4 //
5 //  Created by Sarah Westcott on 10/26/20.
6 //  Copyright © 2020 Schloss Lab. All rights reserved.
7 //
8 
9 #ifndef biom_hpp
10 #define biom_hpp
11 
12 #include "utils.hpp"
13 #include "mothurout.h"
14 #include "sharedrabundfloatvectors.hpp"
15 #include "sharedrabundvectors.hpp"
16 #include "phylosummary.h"
17 #include "taxonomy.hpp"
18 #include "picrust.hpp"
19 
20 //http://biom-format.org
21 //http://biom-format.org/documentation/format_versions/biom-1.0.html
22 //http://biom-format.org/documentation/format_versions/biom-2.1.html
23 
24 /**************************************************************************************************/
25 class Biom {
26 
27 public:
28     Biom();
29     Biom(string); //version
30 
31     virtual ~Biom();
32 
33     virtual void read(string) = 0;
34     virtual void load(SharedRAbundVectors* s, vector<Taxonomy> c);
35     virtual void load(SharedRAbundFloatVectors* s, vector<Taxonomy> c);
fillHeading(string mv,string sfn)36     virtual void fillHeading(string mv, string sfn) { mothurVersion = mv; sharedFileName = sfn; }
37 
print(string,vector<string>,Picrust *)38     virtual void print(string, vector<string>, Picrust*) { } //hdf5 print
39 
getVersion()40     virtual string getVersion() { return version; }
getMatrixElementType()41     virtual string getMatrixElementType() { return matrixElementType; }
42 
getSharedRAbundVectors()43     virtual SharedRAbundVectors* getSharedRAbundVectors() { return shared; }
getSharedRAbundFloatVectors()44     virtual SharedRAbundFloatVectors* getSharedRAbundFloatVectors() { return sharedFloat; }
45 
46     //otu taxonomies
getConsTaxonomies()47     virtual vector<Taxonomy> getConsTaxonomies() { return consTax; }
48 
49     //sample taxonomies
getGroupTaxonomies()50     virtual map<string, string> getGroupTaxonomies() {  return groupTaxonomies; }
51 
52 protected:
53 
54     MothurOut* m;
55     Utils util;
56     string matrixFormat, tableType;     //examples: tableType = "OTU table", matrixFormat = "sparse" or "dense"
57     string version, formatURL, label, matrixElementType; //version = simple or hdf5, set by child. matrixElementType = "int" or "float"
58     string tableID, mothurVersion, sharedFileName;
59     int maxLevel;
60 
61     SharedRAbundVectors* shared; //always created with read
62     SharedRAbundFloatVectors* sharedFloat; //only created if the matrixElementType is float
63     vector<Taxonomy> consTax;
64     map<string, string> groupTaxonomies;
65 
66 };
67 /**************************************************************************************************/
68 #endif /* biom_hpp */
69