def make_basemap(basemap): try: set_status('getting document list', model=basemap) with ManagedSession() as session: basemap_query = create_query(session, author=basemap.author, institution=basemap.institution) documents = filter_query(basemap_query, dirty=False, starting_year=basemap.starting_year, ending_year=basemap.ending_year, sample_size=basemap.sample_size, model=basemap) extracted_terms = extract_terms(documents, basemap.term_type) if not extracted_terms: raise Exception('No documents found matching query!') map_dict, graph_terms, phrase_frequencies = 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') # 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) except Exception as e: set_status('Error: %s' % e, model=basemap) raise e
def make_heatmap(heatmap, graph_terms): try: set_status('getting document list', model=heatmap) with ManagedSession() as session: heatmap_query= create_query(session, author=heatmap.author, institution=heatmap.institution) filtered_query = filter_query(heatmap_query, dirty=False, starting_year=heatmap.starting_year, ending_year=heatmap.ending_year, sample_size=heatmap.sample_size, model=heatmap) 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