def test_social_relations_model(): data = Adjacency( np.array([ [np.nan, 8, 5, 10], [7, np.nan, 7, 6], [8, 7, np.nan, 5], [4, 5, 0, np.nan], ]), matrix_type="directed", ) data2 = data.append(data) results1 = data.social_relations_model() assert isinstance(data.social_relations_model(), pd.Series) assert isinstance(data2.social_relations_model(), pd.DataFrame) assert len(results1["actor_effect"]) == data.square_shape()[0] assert results1["relationship_effect"].shape == data.square_shape() np.testing.assert_approx_equal(results1["actor_variance"], 3.33, significant=2) np.testing.assert_approx_equal(results1["partner_variance"], 0.66, significant=2) np.testing.assert_approx_equal(results1["relationship_variance"], 3.33, significant=2) np.testing.assert_approx_equal(results1["actor_partner_correlation"], 0.22, significant=2) np.testing.assert_approx_equal(results1["dyadic_reciprocity_correlation"], 0.2, significant=2)
def test_append(sim_adjacency_single): a = Adjacency() a = a.append(sim_adjacency_single) assert a.shape() == sim_adjacency_single.shape() a = a.append(a) assert a.shape() == (2, 6)
def test_adjacency(tmpdir): n = 10 sim = np.random.multivariate_normal([0,0,0,0],[[1, 0.8, 0.1, 0.4], [0.8, 1, 0.6, 0.1], [0.1, 0.6, 1, 0.3], [0.4, 0.1, 0.3, 1]], 100) data = pairwise_distances(sim.T, metric='correlation') dat_all = [] for t in range(n): tmp = data dat_all.append(tmp) sim_directed = np.array([[1, 0.5, 0.3, 0.4], [0.8, 1, 0.2, 0.1], [0.7, 0.6, 1, 0.5], [0.85, 0.4, 0.3, 1]]) labels = ['v_%s' % (x+1) for x in range(sim.shape[1])] dat_single = Adjacency(dat_all[0], labels=labels) dat_multiple = Adjacency(dat_all, labels=labels) dat_directed = Adjacency(sim_directed, matrix_type='directed', labels=labels) # Test automatic distance/similarity detection assert dat_single.matrix_type is 'distance' dat_single2 = Adjacency(1-data) assert dat_single2.matrix_type is 'similarity' assert not dat_directed.issymmetric assert dat_single.issymmetric # Test length assert len(dat_multiple) == dat_multiple.data.shape[0] assert len(dat_multiple[0]) == 1 # Test Indexing assert len(dat_multiple[0]) == 1 assert len(dat_multiple[0:4]) == 4 assert len(dat_multiple[0, 2, 3]) == 3 # Test basic arithmetic assert(dat_directed+5).data[0] == dat_directed.data[0]+5 assert(dat_directed-.5).data[0] == dat_directed.data[0]-.5 assert(dat_directed*5).data[0] == dat_directed.data[0]*5 assert np.all(np.isclose((dat_directed+dat_directed).data, (dat_directed*2).data)) assert np.all(np.isclose((dat_directed*2-dat_directed).data, dat_directed.data)) # Test copy assert np.all(dat_multiple.data == dat_multiple.copy().data) # Test squareform & iterable assert len(dat_multiple.squareform()) == len(dat_multiple) assert dat_single.squareform().shape == data.shape assert dat_directed.squareform().shape == sim_directed.shape # Test write dat_multiple.write(os.path.join(str(tmpdir.join('Test.csv'))), method='long') dat_multiple2 = Adjacency(os.path.join(str(tmpdir.join('Test.csv'))), matrix_type='distance_flat') dat_directed.write(os.path.join(str(tmpdir.join('Test.csv'))), method='long') dat_directed2 = Adjacency(os.path.join(str(tmpdir.join('Test.csv'))), matrix_type='directed_flat') assert np.all(np.isclose(dat_multiple.data, dat_multiple2.data)) assert np.all(np.isclose(dat_directed.data, dat_directed2.data)) # Test mean assert isinstance(dat_multiple.mean(axis=0), Adjacency) assert len(dat_multiple.mean(axis=0)) == 1 assert len(dat_multiple.mean(axis=1)) == len(np.mean(dat_multiple.data, axis=1)) # Test std assert isinstance(dat_multiple.std(axis=0), Adjacency) assert len(dat_multiple.std(axis=0)) == 1 assert len(dat_multiple.std(axis=1)) == len(np.std(dat_multiple.data, axis=1)) # Test similarity assert len(dat_multiple.similarity( dat_single.squareform())) == len(dat_multiple) assert len(dat_multiple.similarity(dat_single.squareform(), metric='pearson')) == len(dat_multiple) assert len(dat_multiple.similarity(dat_single.squareform(), metric='kendall')) == len(dat_multiple) # Test distance assert isinstance(dat_multiple.distance(), Adjacency) assert dat_multiple.distance().square_shape()[0] == len(dat_multiple) # Test ttest mn, p = dat_multiple.ttest() assert len(mn) == 1 assert len(p) == 1 assert mn.shape()[0] == dat_multiple.shape()[1] assert p.shape()[0] == dat_multiple.shape()[1] # Test Threshold assert np.sum(dat_directed.threshold(upper=.8).data == 0) == 10 assert dat_directed.threshold(upper=.8, binarize=True).data[0] assert np.sum(dat_directed.threshold(upper='70%', binarize=True).data) == 5 assert np.sum(dat_directed.threshold(lower=.4, binarize=True).data) == 6 # Test to_graph() assert isinstance(dat_directed.to_graph(), nx.DiGraph) assert isinstance(dat_single.to_graph(), nx.Graph) # Test Append a = Adjacency() a = a.append(dat_single) assert a.shape() == dat_single.shape() a = a.append(a) assert a.shape() == (2, 6) n_samples = 3 b = dat_multiple.bootstrap('mean', n_samples=n_samples) assert isinstance(b['Z'], Adjacency) b = dat_multiple.bootstrap('std', n_samples=n_samples) assert isinstance(b['Z'], Adjacency) # Test plot f = dat_single.plot() assert isinstance(f, plt.Figure) f = dat_multiple.plot() assert isinstance(f, plt.Figure) # Test plot_mds f = dat_single.plot_mds() assert isinstance(f, plt.Figure)