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