def testTransformationHandle():
	np.random.seed(10)
	n=200
	data = np.random.randint(100,size=(n,1))
	dt = np.arange(n)
	hndl_Trns = EMF_Transformation_Handle('None')
	assert np.all(hndl_Trns.transform_data(data) == data)
	assert str(hndl_Trns) == 'raw'
	# Test Past
	hndl_Trns = EMF_Transformation_Handle('Past_Lvl')
	hndl_Trns.set_extra_parameter(PERIODS_AWAY, 10)
	assert hndl_Trns.transform_data(data).shape == (190,1)
	assert np.all(hndl_Trns.transform_time(dt) == np.arange(10,n))
	assert str(hndl_Trns) == 'PastLvl.10'
	# Test Future
	hndl_Trns = EMF_Transformation_Handle('Futr_Change')
	hndl_Trns.set_extra_parameter(FIRST_ORDER_DIFF_TIME, 20)
	assert hndl_Trns.transform_data(data).shape == (180,1)
	assert np.all(hndl_Trns.transform_time(dt) == np.arange(n-20))
	assert str(hndl_Trns) == 'FutrDiff.20'
	def select_resp_words_all_permutations(self):
		log.info('WORDSELECT: Response Words: Choosing All Data Tickers')
		if self._resp_data_tickers is None:
			self.__add_resp_data_tickers()
		log.info('WORDSELECT: Response Words: Choosing All Transformations')
		trns_list = {}
		for trns in self.resp_trns_ptrns:
			for (k, v_list) in self.resp_trns_kwargs.iteritems():
				for v in v_list:
					hndl_Trns = EMF_Transformation_Handle(trns)
					hndl_Trns.set_extra_parameter(k, v)
					trns_list[str(hndl_Trns)] = hndl_Trns
		trns_list = trns_list.values()
		log.info('WORDSELECT: Response Words: Created {0} Transformations'.format(len(trns_list)))
		self._resp_words = []
		count = 0
		for ticker in self.resp_data_tickers:
			hndl_Data = EMF_DataSeries_Handle(self.hndl_DB, ticker=ticker)
			hndl_Data.save_series_local()			
			for hndl_Trns in trns_list:
				hndl_Word = EMF_WordSeries_Handle(self.hndl_DB, hndl_Data, hndl_Trns)
				self._resp_words.append(hndl_Word)
				count += 1
		log.info('WORDSELECT: Response Words: Created {0} Response Words'.format(count))