def writeDataHistorytoJSON(ticker):
	dataSeriesID = EM_DBHelp.retrieve_DataSeriesID(	db_conn, db_curs, 
													dataTicker=ticker, 
													insertIfNot=False)
	
	data_JSON = convertDataHistoryToJSON(ticker, dataSeriesID=dataSeriesID)

	columnName = 'dt_earliest_value'
	earliestData = EM_DGUtil.getFromDB()
	columnName = 'dt_latest_value'
	latestData = EM_DGUtil.getFromDB()
	columnName = 'dt_last_updated_history'
	lastUpdate = EM_DGUtil.getFromDB()

	writeFile = generateDateHistoryFilename(ticker, earliestData, latestData, lastUpdate)
	updateAvailableSeriesDataFile(ticker, earliestData, latestData, lastUpdate, dataFileName=writeFile)

	try:
		writer = open(writeFile, 'wb')
		writer.write(json_dump(data_JSON))
	except:
		raise
	finally:
		writer.close()
def generateWords_FirstOrderDiff_SingleTicker(ticker):
	wordType = EM_util.wordTypes['1OD']
	wordSuperType = EM_util.wordSuperTypes['generic']

	dg_handle = EM_DGUtil.EMF_DataGenerator_Handle(db_conn, db_curs)

	dg_handle.findAndStoreDataSeries(ticker)

	if dg_handle.dataPeriodicity == 365: #Daily
		raise NotImplementedError
	elif dg_handle.dataPeriodicity == 52: #Weekly
		raise NotImplementedError
	elif dg_handle.dataPeriodicity == 12: #Monthly
		periods = [1, 3, 6, 12, 18, 24, 36, 48, 60]
		periodDesc = 'M'
	elif dg_handle.dataPeriodicity == 4: #Quarterly
		periods = [1, 2, 3, 4, 6, 8, 12 ,16, 20]
		periodDesc = 'Q'
	else:
		raise Exception('dataPeriodicity not recognized.')

	if len(EM_DGUtil.firstOrderDiffPeriodOverride) > 0:
		periods = EM_DGUtil.firstOrderDiffPeriodOverride

	dataSeries = dg_handle.getDataHistory()

	for periodLength in periods:
		wordTicker = '1OD|' + str(periodLength) + periodDesc + '|' + ticker
		wordSubType = periodLength
		
		dg_handle.findAndStoreWordSeries(wordTicker, wordSubType, wordType, wordSuperType)

		firstOrderDiffData = EM_DGUtil.findFirstOrderDifferences(dataSeries, periodLength)

		dates = []
		values = []

		for i in range(len(firstOrderDiffData)):
			dates.append(dataSeries['dates'][i+periodLength])
			values.append(firstOrderDiffData[i])

		dg_handle.insertWords(dates, values)
		dg_handle.resetWordSeries()