Beispiel #1
0
def test_df():
    m = Message(tensors, vectors)
    df = m.dataframe()
    assert df.equals(pd.DataFrame(vectors))
    df = m.dataframe(keys=['c'])
    assert df.equals(pd.DataFrame({'c': vectors['c']}))
    df = m.dataframe(keys=['c','a'])
    assert (df == (pd.DataFrame({'c': vectors['c'], 'a': np.array(tensors['a'])}))).all().all()
Beispiel #2
0
def test_Message_set_get():

    # Test point updates
    email = Message(tensors, vectors)
    gmail = Message({'a':torch.Tensor([1,42,3]), 'b':torch.Tensor([4,43,6]), 'c': np.array([7,99,9]), 'd': np.array([10,100,12])})
    replacement = {'a': torch.Tensor([42]), 'b': torch.Tensor([43]), 'c': np.array([99]), 'd': np.array([100])}
    assert len(email) == 3
    assert email != gmail
    email[1] = replacement
    assert email == gmail
    # Test ranged updates
    email = Message(tensors, vectors)
    gmail = Message({'a':torch.Tensor([1,42,33]), 'b':torch.Tensor([4,43,66]), 'c': np.array([7,99,99]), 'd': np.array([10,100,122])})
    replacement = {'a': torch.Tensor([42,33]), 'b': torch.Tensor([43,66]), 'c': np.array([99,99]), 'd': np.array([100,122])}
    assert email != gmail
    email[1:3] = replacement
    assert email == gmail
    # Test updates using lists as indexes
    email = Message(tensors, vectors)
    assert email != gmail
    email[[1,2]] = replacement
    assert email == gmail
    # Test column updates
    email['a'] = torch.Tensor([9,9,9])
    assert torch.equal(email['a'], torch.Tensor([9,9,9]))
    email['c'] = np.array([9,9,9])
    assert email['c'].equals(pd.Series([9,9,9]))
    # Test column updates that switch from df to tensor and vice-versa
    email = Message(tensors, vectors)
    assert set(email.columns) == set(['a','b','c','d'])
    assert set(email.tensor_message.columns) == set(['a','b'])
    assert set(email.df.columns) == set(['c','d'])
    new_a = np.array([1,2,3]) # Switch from tensor to vector
    email['a'] = new_a
    assert set(email.columns) == set(['a','b','c','d'])
    assert set(email.tensor_message.columns) == set(['b'])
    assert set(email.df.columns) == set(['a','c','d'])
    assert (email['a'] == new_a).all()
    new_c = torch.Tensor([7,8,9])
    email['c'] = new_c
    assert set(email.columns) == set(['a','b','c','d'])
    assert set(email.tensor_message.columns) == set(['b','c'])
    assert set(email.df.columns) == set(['a','d'])
    assert (email['c'] == new_c).all()
    # Test column updates that end up clearing either self.df or self.tensor_message
    email = Message(tensors, vectors)
    df = email.dataframe(['a', 'b'])
    assert len(email) == 3
    assert len(email.tensor_message) == 3
    assert len(email.df) == 3
    email[['a','b']] = df
    assert len(email) == 3
    assert len(email.tensor_message) == 0
    assert len(email.df) == 3