def test_plot_connectome(): node_color = ['green', 'blue', 'k', 'cyan'] # symmetric up to 1e-3 relative tolerance adjacency_matrix = np.array([[1., -2., 0.3, 0.], [-2.002, 1, 0., 0.], [0.3, 0., 1., 0.], [0., 0., 0., 1.]]) node_coords = np.arange(3 * 4).reshape(4, 3) args = adjacency_matrix, node_coords kwargs = dict(edge_threshold=0.38, title='threshold=0.38', node_size=10, node_color=node_color) plot_connectome(*args, **kwargs) plt.close() # used to speed-up tests for the next plots kwargs['display_mode'] = 'x' # node_coords not an array but a list of tuples plot_connectome(adjacency_matrix, [tuple(each) for each in node_coords], **kwargs) # saving to file filename = tempfile.mktemp(suffix='.png') try: display = plot_connectome(*args, output_file=filename, **kwargs) assert_true(display is None) assert_true(os.path.isfile(filename) and os.path.getsize(filename) > 0) finally: os.remove(filename) plt.close() # with node_kwargs, edge_kwargs and edge_cmap arguments plot_connectome(*args, edge_threshold='70%', node_size=[10, 20, 30, 40], node_color=np.zeros((4, 3)), edge_cmap='RdBu', colorbar=True, node_kwargs={ 'marker': 'v'}, edge_kwargs={ 'linewidth': 4}) plt.close() # masked array support masked_adjacency_matrix = np.ma.masked_array( adjacency_matrix, np.abs(adjacency_matrix) < 0.5) plot_connectome(masked_adjacency_matrix, node_coords, **kwargs) plt.close() # sparse matrix support sparse_adjacency_matrix = sparse.coo_matrix(adjacency_matrix) plot_connectome(sparse_adjacency_matrix, node_coords, **kwargs) plt.close() # NaN matrix support nan_adjacency_matrix = np.array([[1., np.nan, 0.], [np.nan, 1., 2.], [np.nan, 2., 1.]]) nan_node_coords = np.arange(3 * 3).reshape(3, 3) plot_connectome(nan_adjacency_matrix, nan_node_coords, **kwargs) plt.close() # smoke-test where there is no edge to draw, e.g. when # edge_threshold is too high plot_connectome(*args, edge_threshold=1e12) plt.close() # with colorbar=True plot_connectome(*args, colorbar=True) plt.close() # smoke-test with hemispheric saggital cuts plot_connectome(*args, display_mode='lzry') plt.close()
def test_plot_connectome(): import matplotlib.pyplot as plt plt.switch_backend('template') node_color = ['green', 'blue', 'k', 'cyan'] # symmetric up to 1e-3 relative tolerance adjacency_matrix = np.array([[1., -2., 0.3, 0.], [-2.002, 1, 0., 0.], [0.3, 0., 1., 0.], [0., 0., 0., 1.]]) node_coords = np.arange(3 * 4).reshape(4, 3) args = adjacency_matrix, node_coords kwargs = dict(edge_threshold=0.38, title='threshold=0.38', node_size=10, node_color=node_color) plot_connectome(*args, **kwargs) # used to speed-up tests for the next plots kwargs['display_mode'] = 'x' # node_coords not an array but a list of tuples plot_connectome(adjacency_matrix, [tuple(each) for each in node_coords], **kwargs) # saving to file with tempfile.NamedTemporaryFile(suffix='.png') as fp: display = plot_connectome(*args, output_file=fp.name, **kwargs) assert_true(display is None) assert_true(os.path.isfile(fp.name) and os.path.getsize(fp.name) > 0) # with node_kwargs, edge_kwargs and edge_cmap arguments plot_connectome(*args, edge_threshold='70%', node_size=[10, 20, 30, 40], node_color=np.zeros((4, 3)), edge_cmap='RdBu', node_kwargs={'marker': 'v'}, edge_kwargs={'linewidth': 4}) # masked array support masked_adjacency_matrix = np.ma.masked_array( adjacency_matrix, np.abs(adjacency_matrix) < 0.5) plot_connectome(masked_adjacency_matrix, node_coords, **kwargs) # sparse matrix support sparse_adjacency_matrix = sparse.coo_matrix(adjacency_matrix) plot_connectome(sparse_adjacency_matrix, node_coords, **kwargs) # NaN matrix support nan_adjacency_matrix = np.array([[1., np.nan, 0.], [np.nan, 1., 2.], [np.nan, 2., 1.]]) nan_node_coords = np.arange(3 * 3).reshape(3, 3) plot_connectome(nan_adjacency_matrix, nan_node_coords, **kwargs)
def test_plot_connectome(): node_color = ['green', 'blue', 'k', 'cyan'] # symmetric up to 1e-3 relative tolerance adjacency_matrix = np.array([[1., -2., 0.3, 0.], [-2.002, 1, 0., 0.], [0.3, 0., 1., 0.], [0., 0., 0., 1.]]) node_coords = np.arange(3 * 4).reshape(4, 3) args = adjacency_matrix, node_coords kwargs = dict(edge_threshold=0.38, title='threshold=0.38', node_size=10, node_color=node_color) plot_connectome(*args, **kwargs) plt.close() # used to speed-up tests for the next plots kwargs['display_mode'] = 'x' # node_coords not an array but a list of tuples plot_connectome(adjacency_matrix, [tuple(each) for each in node_coords], **kwargs) # saving to file filename = tempfile.mktemp(suffix='.png') try: display = plot_connectome(*args, output_file=filename, **kwargs) assert_true(display is None) assert_true(os.path.isfile(filename) and os.path.getsize(filename) > 0) finally: os.remove(filename) plt.close() # with node_kwargs, edge_kwargs and edge_cmap arguments plot_connectome(*args, edge_threshold='70%', node_size=[10, 20, 30, 40], node_color=np.zeros((4, 3)), edge_cmap='RdBu', colorbar=True, node_kwargs={ 'marker': 'v'}, edge_kwargs={ 'linewidth': 4}) plt.close() # masked array support masked_adjacency_matrix = np.ma.masked_array( adjacency_matrix, np.abs(adjacency_matrix) < 0.5) plot_connectome(masked_adjacency_matrix, node_coords, **kwargs) plt.close() # sparse matrix support sparse_adjacency_matrix = sparse.coo_matrix(adjacency_matrix) plot_connectome(sparse_adjacency_matrix, node_coords, **kwargs) plt.close() # NaN matrix support node_color = ['green', 'blue', 'k'] # Overriding 'node_color' for 3 elements of size 3. kwargs['node_color'] = node_color nan_adjacency_matrix = np.array([[1., np.nan, 0.], [np.nan, 1., 2.], [np.nan, 2., 1.]]) nan_node_coords = np.arange(3 * 3).reshape(3, 3) plot_connectome(nan_adjacency_matrix, nan_node_coords, **kwargs) plt.close() # smoke-test where there is no edge to draw, e.g. when # edge_threshold is too high plot_connectome(*args, edge_threshold=1e12) plt.close() # with colorbar=True plot_connectome(*args, colorbar=True) plt.close() # smoke-test with hemispheric saggital cuts plot_connectome(*args, display_mode='lzry') plt.close() # test node_color as a string with display_mode='lzry' plot_connectome(*args, node_color='red', display_mode='lzry') plt.close() plot_connectome(*args, node_color=['red'], display_mode='lzry') plt.close()
def test_plot_connectome_exceptions(): node_coords = np.arange(2 * 3).reshape((2, 3)) # Used to speed-up tests because the glass brain is always plotted # before any error occurs kwargs = {'display_mode': 'x'} # adjacency_matrix is not symmetric non_symmetric_adjacency_matrix = np.array([[1., 2], [0.4, 1.]]) with pytest.raises(ValueError, match='should be symmetric'): plot_connectome(non_symmetric_adjacency_matrix, node_coords, **kwargs) adjacency_matrix = np.array([[1., 2.], [2., 1.]]) # adjacency_matrix mask is not symmetric masked_adjacency_matrix = np.ma.masked_array( adjacency_matrix, [[False, True], [False, False]]) with pytest.raises(ValueError, match='non symmetric mask'): plot_connectome(masked_adjacency_matrix, node_coords, **kwargs) # edges threshold is neither a number nor a string with pytest.raises(TypeError, match='should be either a number or a string'): plot_connectome(adjacency_matrix, node_coords, edge_threshold=object(), **kwargs) # wrong shapes for node_coords or adjacency_matrix with pytest.raises(ValueError, match=r'supposed to have shape \(n, n\).+\(1L?, 2L?\)'): plot_connectome(adjacency_matrix[:1, :], node_coords, **kwargs) with pytest.raises(ValueError, match=r'shape \(2L?, 3L?\).+\(2L?,\)'): plot_connectome(adjacency_matrix, node_coords[:, 2], **kwargs) wrong_adjacency_matrix = np.zeros((3, 3)) with pytest.raises(ValueError, match=r'Shape mismatch.+\(3L?, 3L?\).+\(2L?, 3L?\)'): plot_connectome(wrong_adjacency_matrix, node_coords, **kwargs) # a few not correctly formatted strings for 'edge_threshold' wrong_edge_thresholds = ['0.1', '10', '10.2.3%', 'asdf%'] for wrong_edge_threshold in wrong_edge_thresholds: with pytest.raises( ValueError, match='should be a number followed by the percent sign'): plot_connectome(adjacency_matrix, node_coords, edge_threshold=wrong_edge_threshold, **kwargs) # specifying node sizes via node_kwargs with pytest.raises(ValueError, match="Please use 'node_size' and not 'node_kwargs'"): plot_connectome(adjacency_matrix, node_coords, node_kwargs={'s': 50}, **kwargs) # specifying node colors via node_kwargs with pytest.raises(ValueError, match="Please use 'node_color' and not 'node_kwargs'"): plot_connectome(adjacency_matrix, node_coords, node_kwargs={'c': 'blue'}, **kwargs)
def test_plot_connectome(): node_color = ["green", "blue", "k", "cyan"] # symmetric up to 1e-3 relative tolerance adjacency_matrix = np.array( [[1.0, -2.0, 0.3, 0.0], [-2.002, 1, 0.0, 0.0], [0.3, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0]] ) node_coords = np.arange(3 * 4).reshape(4, 3) args = adjacency_matrix, node_coords kwargs = dict(edge_threshold=0.38, title="threshold=0.38", node_size=10, node_color=node_color) plot_connectome(*args, **kwargs) # used to speed-up tests for the next plots kwargs["display_mode"] = "x" # node_coords not an array but a list of tuples plot_connectome(adjacency_matrix, [tuple(each) for each in node_coords], **kwargs) # saving to file with tempfile.NamedTemporaryFile(suffix=".png") as fp: display = plot_connectome(*args, output_file=fp.name, **kwargs) assert_true(display is None) assert_true(os.path.isfile(fp.name) and os.path.getsize(fp.name) > 0) # with node_kwargs, edge_kwargs and edge_cmap arguments plot_connectome( *args, edge_threshold="70%", node_size=[10, 20, 30, 40], node_color=np.zeros((4, 3)), edge_cmap="RdBu", node_kwargs={"marker": "v"}, edge_kwargs={"linewidth": 4} ) # masked array support masked_adjacency_matrix = np.ma.masked_array(adjacency_matrix, np.abs(adjacency_matrix) < 0.5) plot_connectome(masked_adjacency_matrix, node_coords, **kwargs) # sparse matrix support sparse_adjacency_matrix = sparse.coo_matrix(adjacency_matrix) plot_connectome(sparse_adjacency_matrix, node_coords, **kwargs) # NaN matrix support nan_adjacency_matrix = np.array([[1.0, np.nan, 0.0], [np.nan, 1.0, 2.0], [np.nan, 2.0, 1.0]]) nan_node_coords = np.arange(3 * 3).reshape(3, 3) plot_connectome(nan_adjacency_matrix, nan_node_coords, **kwargs) # smoke-test where there is no edge to draw, e.g. when # edge_threshold is too high plot_connectome(*args, edge_threshold=1e12)
def test_plot_connectome(): import matplotlib.pyplot as plt plt.switch_backend('template') node_color = ['green', 'blue', 'k', 'cyan'] # symmetric up to 1e-3 relative tolerance adjacency_matrix = np.array([[1., -2., 0.3, 0.], [-2.002, 1, 0., 0.], [0.3, 0., 1., 0.], [0., 0., 0., 1.]]) node_coords = np.arange(3 * 4).reshape(4, 3) args = adjacency_matrix, node_coords kwargs = dict(edge_threshold=0.38, title='threshold=0.38', node_size=10, node_color=node_color) plot_connectome(*args, **kwargs) # used to speed-up tests for the next plots kwargs['display_mode'] = 'x' # node_coords not an array but a list of tuples plot_connectome(adjacency_matrix, [tuple(each) for each in node_coords], **kwargs) # saving to file with tempfile.NamedTemporaryFile(suffix='.png') as fp: display = plot_connectome(*args, output_file=fp.name, **kwargs) assert_true(display is None) assert_true(os.path.isfile(fp.name) and os.path.getsize(fp.name) > 0) # with node_kwargs, edge_kwargs and edge_cmap arguments plot_connectome(*args, edge_threshold='70%', node_size=[10, 20, 30, 40], node_color=np.zeros((4, 3)), edge_cmap='RdBu', node_kwargs={ 'marker': 'v'}, edge_kwargs={ 'linewidth': 4}) # masked array support masked_adjacency_matrix = np.ma.masked_array( adjacency_matrix, np.abs(adjacency_matrix) < 0.5) plot_connectome(masked_adjacency_matrix, node_coords, **kwargs) # sparse matrix support sparse_adjacency_matrix = sparse.coo_matrix(adjacency_matrix) plot_connectome(sparse_adjacency_matrix, node_coords, **kwargs) # NaN matrix support nan_adjacency_matrix = np.array([[1., np.nan, 0.], [np.nan, 1., 2.], [np.nan, 2., 1.]]) nan_node_coords = np.arange(3 * 3).reshape(3, 3) plot_connectome(nan_adjacency_matrix, nan_node_coords, **kwargs)