예제 #1
0
	def test_local_weights(self):
		ass=self.assignments
		score_bmrb1=ScoreFunction(bmrb=1)
		score_sym1=ScoreFunction(symmetry=1)
		score_cons1=ScoreFunction(consistency=1)
		#apply scores to fill local score-info
		score_bmrb1(ass)
		score_sym1(ass)
		score_cons1(ass)

		cache=ass.scores.atomic
		key=cache.keys()[0]
		self.assertEqual(0,score_sym1.evaluate_local_scores(cache[key]))
		self.assertNotEqual(0,score_bmrb1.evaluate_local_scores(cache[key]))
		cache=ass.scores.assignments
		#find a non-zero symmetry entry
		for key in cache.iterkeys():
			if cache[key]['symmetry'].score!=0:
				break
		self.assertNotEqual(0,score_sym1.evaluate_local_scores(cache[key]))
		self.assertEqual(0,score_bmrb1.evaluate_local_scores(cache[key]))

		cache=ass.scores.atomic
		key=cache.keys()[0]
		bmrb1=score_bmrb1.evaluate_local_scores(cache[key])
		cons1=score_cons1.evaluate_local_scores(cache[key])
		self.assertEqual(bmrb1*0.2+cons1*3.2,ScoreFunction(bmrb=0.2,consistency=3.2).evaluate_local_scores(cache[key]))
		self.assertEqual(-bmrb1+cons1*3.2,ScoreFunction(bmrb=-1,consistency=3.2).evaluate_local_scores(cache[key]))