def getCommonDatesLocations(iterator,metadata,times,locations,dimensions,k): vNInd = '0' overallDateFormat = iterator.overallDateFormat if hasattr(iterator,'overallDateFormat') else '' dateFormat = iterator.dateFormat if hasattr(iterator,'dateFormat') else '' overallDate = iterator.overallDate if hasattr(iterator,'overallDate') else '' if overallDateFormat or dateFormat: DF = overallDateFormat + dateFormat F = td.mongotimeformatter(DF) T1 = [F(overallDate + x) for x in iterator.columnGroups['timeColNames'] if x in dimensions[k]] if overallDateFormat: reverseF = td.reverse(dateFormat) T2 = [F(overallDate + y) for y in map(reverseF,times[k])] else: T2 = times[k] mindate = min(T1 + T2) maxdate = max(T1 + T2) divisions = uniqify(ListUnion([td.getLowest(t) for t in T1 + T2])) metadata[k]['beginDate'] = mindate metadata[k]['endDate'] = maxdate metadata[k]['dateDivisions'] = divisions #locations if locations[k]: if hasattr(iterator,'overallLocation'): locs = [loc.integrate(iterator.overallLocation,l) for l in locations[k]] else: locs = locations[k] locs = locListUniqify(locs) metadata[k]['spatialDivisions'] = uniqify(ListUnion([loc.divisions(x) for x in locs])) metadata[k]['commonLocation'] = reduce(loc.intersect,locs)
def initialize_argdict(collection): d = {} ; ArgDict = {} sliceCols = uniqify(Flatten(collection.sliceCols)) sliceColList = ListUnion([[x] if x.split('.')[0] in collection.columns else collection.columnGroups.get(x,[]) for x in sliceCols]) if hasattr(collection,'contentCols'): contentColList = ListUnion([[x] if x.split('.')[0] in collection.columns else collection.columnGroups.get(x,[]) for x in collection.contentCols]) contentCols = uniqify(contentColList + sliceColList) else: contentCols = sliceColList contentColNums = getStrs(collection,contentCols) ArgDict['contentColNums'] = contentColNums if hasattr(collection,'dateFormat'): dateFormat = collection.dateFormat ArgDict['overallDateFormat'] = dateFormat timeFormatter = td.mongotimeformatter(dateFormat) ArgDict['timeFormatter'] = timeFormatter else: dateFormat = '' if hasattr(collection,'overallDate'): od = collection.overallDate['date'] odf = collection.overallDate['format'] ArgDict['overallDate'] = od overallDateFormat = odf + dateFormat ArgDict['overallDateFormat'] = overallDateFormat timeFormatter = td.mongotimeformatter(overallDateFormat) ArgDict['timeFormatter'] = timeFormatter OD = timeFormatter(overallDate +'X'*len(dateFormat)) ArgDict['dateDivisions'] = td.getLowest(OD) ArgDict['datePhrases'] = [td.phrase(OD)] ArgDict['mindate'] = OD ArgDict['maxdate'] = OD if dateFormat: reverseTimeFormatter = td.reverse(dateFormat) ArgDict['reverseTimeFormatter'] = reverseTimeFormatter else: od = '' if 'timeColNames' in collection.columnGroups.keys(): timeColNamesInd = getNums(collection,collection.columnGroups['timeColNames']) tcs = [timeFormatter(od + t) for t in collection.columnGroups['timeColNames']] ArgDict['timeColNames'] = tcs ArgDict['timeColNameInds'] = timeColNamesInd ArgDict['timeColNameDivisions'] = [[td.TIME_DIVISIONS[x] for x in td.getLowest(tc)] for tc in tcs] ArgDict['timeColNamePhrases'] = [td.phrase(t) for t in tcs] if 'timeColumns' in collection.columnGroups.keys(): ArgDict['timeColInds'] = getNums(collection,collection.columnGroups['timeColumns']) #overall location if hasattr(collection,'overallLocation'): ol = collection.overallLocation ArgDict['overallLocation'] = ol else: ol = None #get divisions and phrases from OverallLocation and SpaceColNames if 'spaceColNames' in collection.columnGroups.keys(): spaceColNames = collection.columnGroups['spaceColNames'] ArgDict['spaceColNames'] = [loc.integrate(ol,x) for x in spaceColNames] if 'spaceColumns' in collection.columnGroups.keys(): ArgDict['spaceColInds'] = getNums(collection,collection.columnGroups['spaceColumns']) Source = collection.source SourceNameDict = son.SON([(k,Source[k]['name'] if isinstance(Source[k],dict) else Source[k]) for k in Source.keys()]) SourceAbbrevDict = dict([(k,Source[k]['shortName']) for k in Source.keys() if isinstance(Source[k],dict) and 'shortName' in Source[k].keys() ]) d['sourceSpec'] = json.dumps(SourceNameDict,default=ju.default) d['agency'] = SourceNameDict['agency'] d['subagency'] = SourceNameDict['subagency'] d['dataset'] = SourceNameDict['dataset'] for k in SourceNameDict.keys(): d['source_' + str(k).lower()] = SourceNameDict[k] for k in SourceAbbrevDict.keys(): d['source_' + str(k).lower() + '_acronym'] = SourceAbbrevDict[k] d['source'] = ' '.join(SourceNameDict.values() + SourceAbbrevDict.values()) if 'subcollections' in collection.columns: ArgDict['subColInd'] = collection.columns.index('subcollections') value_processor_instructions = stringifyDictElements(collection.valueProcessors) vpcontext = commonjs.translatorContext(value_processor_instructions) ArgDict['valueProcessors'],ArgDict['valueProcessorsKey'] = get_processors(value_processor_instructions,collection, vpcontext ,commonjs.js_call) return d, ArgDict