def check_network(net_name = 'binding', dataset_name = 'reinitz', data_ofs = 4, max_edges = -1, node_restriction = 'reinitz'): reinitz_keys =set( get_reinitz_data()[1].keys()) if dataset_name == 'reinitz': coords, values = get_reinitz_data(ofs = data_ofs) elif dataset_name == 'bdtnp': data = nio.getBDTNP() meta = nio.getBDTNP(misc = True) values = dict([( k, v['vals'][:,data_ofs] ) for k,v in data.iteritems()]) coords = array([meta['x']['vals'][:,data_ofs],meta['y']['vals'][:,data_ofs]]) elif dataset_name == 'tc': data = nio.getTC() if node_restriction == 'reinitz': data = dict([(k,v) for k,v in data.iteritems() if k in reinitz_keys]) #values = dict([( k, v['vals'][:,data_ofs] ) for k,v in data.iteritems()]) #coords = array([meta['x']['vals'][:,data_ofs],meta['y']['vals'][:,data_ofs]]) values = data else: raise Exception('data set {0} not yet implemented'.format(dataset_name)) nets = comp.get_graphs() if net_name == 'binding': network = nets['bn'] elif net_name == 'unsup': network = nets['unsup'] elif net_name == 'logistic': network = nets['logistic'] elif net_name =='clusters': network = get_soheil_network(max_edges = max_edges, node_restriction = values.keys()) else: raise Exception('type not implemented: {0}'.format(net_name)) nodes = values.keys() nodes_allowed = set(nodes) f = myplots.fignum(1,(8,8)) ax = f.add_subplot(111) targets = {} edges = [] for n in nodes: targets[n] = [] if n in network: targets[n] = nodes_allowed.intersection(network[n].keys()) xax = linspace(-1,1,20) edges = list(it.chain(*[[(e,v2) for v2 in v] for e, v in targets.iteritems()])) ccofs = [e for e in [ corrcoef(values[tf], values[tg])[0,1] for tf, tg in edges] if not isnan(e)] count, kde = make_kde(ccofs) ax.hist(ccofs,xax,label = net_name) h =histogram(ccofs,xax) ax.fill_between(xax,kde(xax)*max(h[0]),label = net_name,zorder = 1,alpha = .5) myplots.maketitle(ax,'edge correlations kde for {0}'.format('\n{2} data (data offset={0})\n(net_name={1})\n(max_edges={3})' .format(data_ofs, net_name, dataset_name, max_edges) ),\ subtitle = 'n_edges = {0}'.format(len(edges))) ax.legend() f.savefig(myplots.figpath('network_edge_corrs_data_ofs={0}_net={1}_expr={2}_max_edges={3}' .format(data_ofs,net_name,dataset_name, max_edges)))