def make_basemap(basemap): try: set_status('getting document list', model=basemap) with ManagedSession() as session: filtered_query = create_query_for_model(session, basemap, dirty=False) extracted_terms = extract_terms(filtered_query, basemap.term_type) if not extracted_terms: raise Exception('No documents found matching query!') map_dict, graph_terms, phrase_frequencies, unnormed_dict, phrase_scores = map_representation(extracted_terms, ranking_algorithm=basemap.ranking_algorithm, similarity_algorithm=basemap.similarity_algorithm, filtering_algorithm=basemap.filtering_algorithm, number_of_terms=basemap.number_of_terms, model=basemap) # map_string will be a graphviz-processable string # map_string = write_dot.output_pairs_dict(map_dict, True, phrase_frequencies=phrase_frequencies, true_scaling=True).decode('ascii', 'ignore') map_string = write_dot.output_pairs_dict(map_dict, True, phrase_frequencies=phrase_frequencies, true_scaling=True, similarities=unnormed_dict, phrase_scores=phrase_scores).decode('ascii', 'ignore') # save to database basemap.dot_rep = map_string # basemap.phrase_frequencies = json.dumps(jsonize_phrase_dict(phrase_frequencies), indent=4).decode('ascii', 'ignore') # get phrases as a list of lists of strings (one list of words per term) basemap.phrases_in_map = json.dumps(jsonize_phrase_set(graph_terms, None)).decode('ascii', 'ignore') basemap.save() svg_str, width, height = strip_dimensions(call_graphviz(map_string, file_format='svg', model=basemap)) basemap.svg_rep = svg_str basemap.width = width basemap.height = height basemap.finished = True basemap.save() set_status('basemap complete', model=basemap) print 'basemap complete' return map_dict, graph_terms except ZeroDivisionError as e: set_status('Error: too few documents to produce a map. Try a broader search', model=basemap)
def make_heatmap(heatmap, graph_terms): try: set_status('getting document list', model=heatmap) with ManagedSession() as session: filtered_query = create_query_for_model(session, heatmap, dirty=False) extracted_terms = extract_terms(filtered_query, heatmap.term_type) heatmap_terms = flatten(extracted_terms) heatmap_vals = calculate_heatmap_values(heatmap_terms, graph_terms) heatmap.terms = json.dumps(jsonize_phrase_dict(heatmap_vals, 'intensity')) set_status('heatmap complete', model=heatmap) heatmap.finished = True heatmap.save() return heatmap_vals except Exception as e: set_status('Error: %s' % e, model=heatmap) raise e