added SymbolicFactor constructor that takes a SymbolicConditional
							parent
							
								
									c7e76891da
								
							
						
					
					
						commit
						1edcdb6f80
					
				|  | @ -19,6 +19,14 @@ using namespace std; | |||
| 
 | ||||
| namespace gtsam { | ||||
| 
 | ||||
| 	/* ************************************************************************* */ | ||||
| 	SymbolicFactor::SymbolicFactor(const boost::shared_ptr<SymbolicConditional>& c) { | ||||
| 		// initialize keys_ with parents
 | ||||
| 		keys_ = c->parents(); | ||||
| 		// add key on which conditional is defined
 | ||||
| 		keys_.push_back(c->key()); | ||||
| 	} | ||||
| 
 | ||||
| 	/* ************************************************************************* */ | ||||
| 	SymbolicFactor::SymbolicFactor(const vector<shared_ptr> & factors) { | ||||
| 
 | ||||
|  |  | |||
|  | @ -29,6 +29,11 @@ namespace gtsam { | |||
| 
 | ||||
| 		typedef boost::shared_ptr<SymbolicFactor> shared_ptr; | ||||
| 
 | ||||
| 		/**
 | ||||
| 		 * Construct from SymbolicConditional | ||||
| 		 */ | ||||
| 		SymbolicFactor(const boost::shared_ptr<SymbolicConditional>& c); | ||||
| 
 | ||||
| 		/**
 | ||||
| 		 * Constructor from a list of keys | ||||
| 		 */ | ||||
|  |  | |||
|  | @ -13,6 +13,7 @@ using namespace boost::assign; | |||
| #include "smallExample.h" | ||||
| #include "SymbolicFactorGraph.h" | ||||
| #include "SymbolicBayesNet.h" | ||||
| #include "FactorGraph-inl.h" | ||||
| 
 | ||||
| using namespace std; | ||||
| using namespace gtsam; | ||||
|  | @ -87,7 +88,7 @@ TEST( SymbolicFactorGraph, factors) | |||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| TEST( GaussianFactorGraph, removeAndCombineFactors ) | ||||
| TEST( SymbolicFactorGraph, removeAndCombineFactors ) | ||||
| { | ||||
| 	// create a test graph
 | ||||
| 	GaussianFactorGraph factorGraph = createGaussianFactorGraph(); | ||||
|  | @ -104,7 +105,7 @@ TEST( GaussianFactorGraph, removeAndCombineFactors ) | |||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| TEST( GaussianFactorGraph, eliminateOne ) | ||||
| TEST( SymbolicFactorGraph, eliminateOne ) | ||||
| { | ||||
| 	// create a test graph
 | ||||
| 	GaussianFactorGraph factorGraph = createGaussianFactorGraph(); | ||||
|  | @ -144,6 +145,41 @@ TEST( GaussianFactorGraph, eliminate ) | |||
|   CHECK(assert_equal(expected,actual)); | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| TEST( SymbolicFactorGraph, constructFromBayesNet ) | ||||
| { | ||||
| 	// create expected factor graph
 | ||||
| 	FactorGraph<SymbolicFactor> expected; | ||||
| 
 | ||||
| 	list<string> f1_keys; f1_keys += "l1","x1","x2"; | ||||
| 	SymbolicFactor::shared_ptr f1(new SymbolicFactor(f1_keys)); | ||||
| 	expected.push_back(f1); | ||||
| 
 | ||||
| 	list<string> f2_keys; f2_keys += "x1","l1"; | ||||
| 	SymbolicFactor::shared_ptr f2(new SymbolicFactor(f2_keys)); | ||||
| 	expected.push_back(f2); | ||||
| 
 | ||||
| 	list<string> f3_keys; f3_keys += "x1"; | ||||
| 	SymbolicFactor::shared_ptr f3(new SymbolicFactor(f3_keys)); | ||||
| 	expected.push_back(f3); | ||||
| 
 | ||||
| 
 | ||||
|   // create Bayes Net
 | ||||
|   SymbolicConditional::shared_ptr x2(new SymbolicConditional("x2", "l1", "x1")); | ||||
|   SymbolicConditional::shared_ptr l1(new SymbolicConditional("l1", "x1")); | ||||
|   SymbolicConditional::shared_ptr x1(new SymbolicConditional("x1")); | ||||
| 
 | ||||
|   SymbolicBayesNet bayesNet; | ||||
|   bayesNet.push_back(x2); | ||||
|   bayesNet.push_back(l1); | ||||
|   bayesNet.push_back(x1); | ||||
| 
 | ||||
|   // create actual factor graph from a Bayes Net
 | ||||
| 	FactorGraph<SymbolicFactor> actual(bayesNet); | ||||
| 
 | ||||
|   CHECK(assert_equal(expected,actual)); | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| int main() { | ||||
| 	TestResult tr; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue