00001 /* This file is part of libDAI - http://www.libdai.org/ 00002 * 00003 * libDAI is licensed under the terms of the GNU General Public License version 00004 * 2, or (at your option) any later version. libDAI is distributed without any 00005 * warranty. See the file COPYING for more details. 00006 * 00007 * Copyright (C) 2009 Charles Vaske [cvaske at soe dot ucsc dot edu] 00008 * Copyright (C) 2009 University of California, Santa Cruz 00009 */ 00010 00011 00014 00015 00016 #ifndef __defined_libdai_evidence_h 00017 #define __defined_libdai_evidence_h 00018 00019 00020 #include <istream> 00021 #include <dai/daialg.h> 00022 00023 00024 namespace dai { 00025 00026 00028 00033 class Evidence { 00034 public: 00036 typedef std::map<Var, size_t> Observation; 00037 00038 private: 00040 std::vector<Observation> _samples; 00041 00042 public: 00044 Evidence() : _samples() {} 00045 00047 Evidence( std::vector<Observation> &samples ) : _samples(samples) {} 00048 00050 00055 void addEvidenceTabFile( std::istream& is, FactorGraph& fg ); 00056 00058 size_t nrSamples() const { return _samples.size(); } 00059 00061 00062 00063 typedef std::vector<Observation>::iterator iterator; 00065 typedef std::vector<Observation>::const_iterator const_iterator; 00066 00068 iterator begin() { return _samples.begin(); } 00070 const_iterator begin() const { return _samples.begin(); } 00072 iterator end() { return _samples.end(); } 00074 const_iterator end() const { return _samples.end(); } 00076 00077 private: 00079 void addEvidenceTabFile( std::istream& is, std::map<std::string, Var> &varMap ); 00080 }; 00081 00082 00083 } // end of namespace dai 00084 00085 00086 #endif