def score_article(sid): """ main evaluation ranking function """ rank = 1 # initial rank r = redis.Redis() corpus_pref = get_preferences() corpus_filter = get_filtrations() corpus_story = story_words(sid) # need a tokenize here TK # need lemma_builder pref_lemma = lemma_builder(corpus_pref) filter_lemma = lemma_builder(corpus_filter) story_lemma = lemma_builder(corpus_story) intersect_pref = intersect1d(array(corpus_pref), array(corpus_story)) intersect_filter = intersect1d(array(corpus_filter), array(corpus_story)) intersect_lemma_pref = intersect1d(array(pref_lemma), array(story_lemma)) intersect_lemma_filter = intersect1d(array(filter_lemma), array(story_lemma)) # These may be adjusted with additional factors filter_score = 2 * len(intersect_pref) + len(intersect_lemma_pref) prefer_score = -(2 * len(intersect_filter) + len(intersect_lemma_pref)) rank = filter_score + prefer_score r.zincrby("site:storyroll", "story:%s" % sid, rank) # RANK IT return rank
def dict_diff(dict1, dict2): """Return the difference between two dictionaries as a dictionary of key: [val1, val2] pairs. Keys unique to either dictionary are included as key: [val1, '-'] or key: ['-', val2].""" diff_keys = [] common_keys = pylab.intersect1d(dict1.keys(), dict2.keys()) for key in common_keys: if pylab.iterable(dict1[key]): if pylab.any(dict1[key] != dict2[key]): diff_keys.append(key) else: if dict1[key] != dict2[key]: diff_keys.append(key) dict1_unique = [key for key in dict1.keys() if key not in common_keys] dict2_unique = [key for key in dict2.keys() if key not in common_keys] diff = {} for key in diff_keys: diff[key] = [dict1[key], dict2[key]] for key in dict1_unique: diff[key] = [dict1[key], '-'] for key in dict2_unique: diff[key] = ['-', dict2[key]] return diff
def solve(self): """ """ s = "::: solving density :::" text = colored(s, 'cyan') print text firn = self.firn config = self.config # newton's iterative method : solve(self.delta == 0, firn.rho, firn.rhoBc, J=self.J, solver_parameters=config['enthalpy']['solver_params']) rhop = firn.rho.vector().array() # update kc term in drhodt : # if rho > 550, kc = kcHigh # if rho <= 550, kc = kcLow # with parameterizations given by ligtenberg et all 2011 A = firn.rhoi/firn.rhow * 1e3 * firn.adot rhoCoefNew = ones(firn.n) rhoHigh = where(rhop > 550)[0] rhoLow = where(rhop <= 550)[0] rhoCoefNew[rhoHigh] = firn.kcHh * (2.366 - 0.293*ln(A)) rhoCoefNew[rhoLow] = firn.kcLw * (1.435 - 0.151*ln(A)) firn.assign_variable(firn.rhoCoef, rhoCoefNew) rhow = firn.rhow rhoi = firn.rhoi domega = firn.domega # update density for water content : domPos = where(domega > 0)[0] # water content inc. domNeg = where(domega < 0)[0] # water content dec. rhoNotLiq = where(rhop < rhow)[0] # density < water rhoInc = intersect1d(domPos, rhoNotLiq) # where rho can inc. rhop[rhoInc] = rhop[rhoInc] + domega[rhoInc]*rhow rhop[domNeg] = rhop[domNeg] + domega[domNeg]*(rhow - rhoi) #firn.assign_variable(firn.rho, rhop) firn.print_min_max(firn.rho, 'rho')
def astausgleich(ab2org, mn2org, rhoaorg): """shifts the branches of a dc sounding to generate a matching curve.""" ab2 = P.asarray(ab2org) mn2 = P.asarray(mn2org) rhoa = P.asarray(rhoaorg) um = P.unique(mn2) for i in range(len(um) - 1): r0, r1 = [], [] ac = P.intersect1d(ab2[mn2 == um[i]], ab2[mn2 == um[i + 1]]) for a in ac: r0.append(rhoa[(ab2 == a) * (mn2 == um[i])][0]) r1.append(rhoa[(ab2 == a) * (mn2 == um[i + 1])][0]) if len(r0) > 0: fak = P.mean(P.array(r0) / P.array(r1)) print(fak) if P.isfinite(fak) and fak > 0.: rhoa[mn2 == um[i + 1]] *= fak return rhoa # formerly pg as vector