def _run_interface(self, runtime): if not have_cv: raise ImportError("cviewer library is not available") THRESH = self.inputs.threshold K = self.inputs.number_of_permutations TAIL = self.inputs.t_tail edge_key = self.inputs.edge_key details = edge_key + '-thresh-' + str(THRESH) + '-k-' + str( K) + '-tail-' + TAIL + '.pck' # Fill in the data from the networks X = ntwks_to_matrices(self.inputs.in_group1, edge_key) Y = ntwks_to_matrices(self.inputs.in_group2, edge_key) PVAL, ADJ, _ = nbs.compute_nbs(X, Y, THRESH, K, TAIL) iflogger.info('p-values:') iflogger.info(PVAL) pADJ = ADJ.copy() for idx, _ in enumerate(PVAL): x, y = np.where(ADJ == idx + 1) pADJ[x, y] = PVAL[idx] # Create networkx graphs from the adjacency matrix nbsgraph = nx.from_numpy_matrix(ADJ) nbs_pval_graph = nx.from_numpy_matrix(pADJ) # Relabel nodes because they should not start at zero for our convention nbsgraph = nx.relabel_nodes(nbsgraph, lambda x: x + 1) nbs_pval_graph = nx.relabel_nodes(nbs_pval_graph, lambda x: x + 1) if isdefined(self.inputs.node_position_network): node_ntwk_name = self.inputs.node_position_network else: node_ntwk_name = self.inputs.in_group1[0] node_network = nx.read_gpickle(node_ntwk_name) iflogger.info( 'Populating node dictionaries with attributes from {node}'.format( node=node_ntwk_name)) for nid, ndata in node_network.nodes(data=True): nbsgraph.nodes[nid] = ndata nbs_pval_graph.nodes[nid] = ndata path = op.abspath('NBS_Result_' + details) iflogger.info(path) nx.write_gpickle(nbsgraph, path) iflogger.info( 'Saving output NBS edge network as {out}'.format(out=path)) pval_path = op.abspath('NBS_P_vals_' + details) iflogger.info(pval_path) nx.write_gpickle(nbs_pval_graph, pval_path) iflogger.info( 'Saving output p-value network as {out}'.format(out=pval_path)) return runtime
def _run_interface(self, runtime): if not have_cv: raise ImportError("cviewer library is not available") THRESH = self.inputs.threshold K = self.inputs.number_of_permutations TAIL = self.inputs.t_tail edge_key = self.inputs.edge_key details = edge_key + '-thresh-' + str(THRESH) + '-k-' + str(K) + '-tail-' + TAIL + '.pck' # Fill in the data from the networks X = ntwks_to_matrices(self.inputs.in_group1, edge_key) Y = ntwks_to_matrices(self.inputs.in_group2, edge_key) PVAL, ADJ, _ = nbs.compute_nbs(X, Y, THRESH, K, TAIL) iflogger.info('p-values:') iflogger.info(PVAL) pADJ = ADJ.copy() for idx, _ in enumerate(PVAL): x, y = np.where(ADJ == idx + 1) pADJ[x, y] = PVAL[idx] # Create networkx graphs from the adjacency matrix nbsgraph = nx.from_numpy_matrix(ADJ) nbs_pval_graph = nx.from_numpy_matrix(pADJ) # Relabel nodes because they should not start at zero for our convention nbsgraph = nx.relabel_nodes(nbsgraph, lambda x: x + 1) nbs_pval_graph = nx.relabel_nodes(nbs_pval_graph, lambda x: x + 1) if isdefined(self.inputs.node_position_network): node_ntwk_name = self.inputs.node_position_network else: node_ntwk_name = self.inputs.in_group1[0] node_network = nx.read_gpickle(node_ntwk_name) iflogger.info('Populating node dictionaries with attributes from %s', node_ntwk_name) for nid, ndata in node_network.nodes(data=True): nbsgraph.nodes[nid] = ndata nbs_pval_graph.nodes[nid] = ndata path = op.abspath('NBS_Result_' + details) iflogger.info(path) nx.write_gpickle(nbsgraph, path) iflogger.info('Saving output NBS edge network as %s', path) pval_path = op.abspath('NBS_P_vals_' + details) iflogger.info(pval_path) nx.write_gpickle(nbs_pval_graph, pval_path) iflogger.info('Saving output p-value network as %s', pval_path) return runtime
def _run_interface(self, runtime): from cviewer.libs.pyconto.groupstatistics import nbs THRESH = self.inputs.threshold K = self.inputs.number_of_permutations TAIL = self.inputs.t_tail edge_key = self.inputs.edge_key details = (edge_key + "-thresh-" + str(THRESH) + "-k-" + str(K) + "-tail-" + TAIL + ".pck") # Fill in the data from the networks X = ntwks_to_matrices(self.inputs.in_group1, edge_key) Y = ntwks_to_matrices(self.inputs.in_group2, edge_key) PVAL, ADJ, _ = nbs.compute_nbs(X, Y, THRESH, K, TAIL) iflogger.info("p-values:") iflogger.info(PVAL) pADJ = ADJ.copy() for idx, _ in enumerate(PVAL): x, y = np.where(ADJ == idx + 1) pADJ[x, y] = PVAL[idx] # Create networkx graphs from the adjacency matrix nbsgraph = nx.from_numpy_matrix(ADJ) nbs_pval_graph = nx.from_numpy_matrix(pADJ) # Relabel nodes because they should not start at zero for our convention nbsgraph = nx.relabel_nodes(nbsgraph, lambda x: x + 1) nbs_pval_graph = nx.relabel_nodes(nbs_pval_graph, lambda x: x + 1) if isdefined(self.inputs.node_position_network): node_ntwk_name = self.inputs.node_position_network else: node_ntwk_name = self.inputs.in_group1[0] node_network = nx.read_gpickle(node_ntwk_name) iflogger.info("Populating node dictionaries with attributes from %s", node_ntwk_name) for nid, ndata in node_network.nodes(data=True): nbsgraph.nodes[nid] = ndata nbs_pval_graph.nodes[nid] = ndata path = op.abspath("NBS_Result_" + details) iflogger.info(path) nx.write_gpickle(nbsgraph, path) iflogger.info("Saving output NBS edge network as %s", path) pval_path = op.abspath("NBS_P_vals_" + details) iflogger.info(pval_path) nx.write_gpickle(nbs_pval_graph, pval_path) iflogger.info("Saving output p-value network as %s", pval_path) return runtime
# Run the NBS with the following parameter options: # Set an appropriate threshold. It is difficult to provide a rule of thumb # to guide the choice of this threshold. Trial-and-error is always an option # with the number of permutations generated per trial set low. THRESH = 3 # Generate 100 permutations. Many more permutations are required in practice # to yield a reliable estimate. K = 100 # Set TAIL to left, and thus test the alternative hypothesis that mean of # population X < mean of population Y TAIL = 'left' # Run the NBS PVAL, ADJ, NULL = nbs.compute_nbs(X, Y, THRESH, K, TAIL) print "pval", PVAL print "null", NULL imshow(ADJ, interpolation='nearest') title('Edges identified by the NBS') show() # Index of true positives #ind_tp=[ind_set1;ind_set2]; ind_tp = np.vstack((set1, set2)) # Index of positives idenfitied by the NBS #ind_obs=find(adj); ind_obs = np.array(np.where(np.triu(ADJ))).T
# Run the NBS with the following parameter options: # Set an appropriate threshold. It is difficult to provide a rule of thumb # to guide the choice of this threshold. Trial-and-error is always an option # with the number of permutations generated per trial set low. THRESH=3 # Generate 100 permutations. Many more permutations are required in practice # to yield a reliable estimate. K=100 # Set TAIL to left, and thus test the alternative hypothesis that mean of # population X < mean of population Y TAIL='left' # Run the NBS PVAL, ADJ, NULL = nbs.compute_nbs(X,Y,THRESH,K,TAIL); print "pval", PVAL print "null", NULL imshow(ADJ, interpolation='nearest') title('Edges identified by the NBS') show() # Index of true positives #ind_tp=[ind_set1;ind_set2]; ind_tp = np.vstack( (set1, set2) ) # Index of positives idenfitied by the NBS #ind_obs=find(adj); ind_obs = np.array(np.where(np.triu(ADJ))).T