def generate_tree():
    with app.app_context():
        data = flask.json.loads(request.data)
        params = data['params']
        age_params = {
            'avg_age': params['avg_age'],
            'age_dev': params['age_dev']
        }
        sender = ContactsTree(DEPTH, age_params).generate_tree()
        settings = {}
        settings.update(data['params'])
        simulator = SimulationManager(sender=sender, settings=settings)
        nodes = simulator.traverse()
        return flask.jsonify(dict(root=sender.to_dict(), nodes=nodes, edges=make_edges(nodes)))
Example #2
0
def main(show_age_clusterization, show_contacts_tree,
         show_total_statistics, show_all_contacts,
         use_profile_spreading, verbose):

    with open('config.json', 'r') as config_json:
        config = config_json.read()
        settings = json.loads(config)

    if verbose:
        logger.setLevel(logging.INFO)

    tree = ContactsTree(settings['depth'], settings['age_params'])
    sender = tree.generate_tree()
    settings.update(dict(use_profile_spreading=use_profile_spreading))
    
    simulator = SimulationManager(sender=sender, settings=settings)
    simulator.start_simulation()
    nodes = sender.traverse()

    if show_total_statistics:
        stats = simulator.statistics()
        click.echo('\nAverage request number: {}'.format(simulator.average_request_number()))
        click.echo('\nAggregated data...')
        for answer, votes in stats.iteritems():
            click.echo(
                'Answer "{answer}" got {votes}% of votes'.format(
                    answer=answer,
                    votes=votes
                )
            )
    
    if show_contacts_tree:
        figure(1)
        visualize_graph(nodes)

    if show_age_clusterization:
        figure(2)
        hist(
            generate_age_ranges(1000, settings['age_params']['avg_age'], settings['age_params']['age_dev']),
            bins=50
        )
        pylab.show()

    if show_all_contacts:
        json_nodes = json.dumps(nodes, default=serializer, indent=4)
        click.echo('\nContacts tree:\n{}'.format(json_nodes))