def test_melt_1(): table = (('id', 'gender', 'age'), (1, 'F', 12), (2, 'M', 17), (3, 'M', 16)) expectation = (('id', 'variable', 'value'), (1, 'gender', 'F'), (1, 'age', 12), (2, 'gender', 'M'), (2, 'age', 17), (3, 'gender', 'M'), (3, 'age', 16)) result = melt(table, key='id') ieq(expectation, result) result = melt(table, key='id', variablefield='variable', valuefield='value') ieq(expectation, result)
def test_melt_2_shortrow(): table = (('id', 'time', 'height', 'weight'), (1, 11, 66.4, 12.2), (2, 16, 53.2, 17.3), (3, 12, 34.5), (4, 14)) expectation = (('id', 'time', 'variable', 'value'), (1, 11, 'height', 66.4), (1, 11, 'weight', 12.2), (2, 16, 'height', 53.2), (2, 16, 'weight', 17.3), (3, 12, 'height', 34.5)) result = melt(table, key=('id', 'time')) ieq(expectation, result) expectation = (('id', 'time', 'variable', 'value'), (1, 11, 'height', 66.4), (2, 16, 'height', 53.2), (3, 12, 'height', 34.5)) result = melt(table, key=('id', 'time'), variables='height') ieq(expectation, result)
def test_melt_1_shortrow(): table = (('id', 'gender', 'age'), (1, 'F', 12), (2, 'M', 17), (3, 'M'), (4,)) expectation = (('id', 'variable', 'value'), (1, 'gender', 'F'), (1, 'age', 12), (2, 'gender', 'M'), (2, 'age', 17), (3, 'gender', 'M')) result = melt(table, key='id') ieq(expectation, result) result = melt(table, key='id', variablefield='variable', valuefield='value') ieq(expectation, result)
def test_melt_and_capture(): table = (('id', 'parad0', 'parad1', 'parad2'), ('1', '12', '34', '56'), ('2', '23', '45', '67')) expectation = (('id', 'parasitaemia', 'day'), ('1', '12', '0'), ('1', '34', '1'), ('1', '56', '2'), ('2', '23', '0'), ('2', '45', '1'), ('2', '67', '2')) step1 = melt(table, key='id', valuefield='parasitaemia') step2 = capture(step1, 'variable', 'parad(\\d+)', ('day', )) ieq(expectation, step2)
def test_melt_1(): table = (('id', 'gender', 'age'), (1, 'F', 12), (2, 'M', 17), (3, 'M', 16)) expectation = (('id', 'variable', 'value'), (1, 'gender', 'F'), (1, 'age', 12), (2, 'gender', 'M'), (2, 'age', 17), (3, 'gender', 'M'), (3, 'age', 16)) result = melt(table, key='id') ieq(expectation, result) # use field index as key result = melt(table, key=0) ieq(expectation, result) result = melt(table, key='id', variablefield='variable', valuefield='value') ieq(expectation, result)
def test_melt_and_capture(): table = (('id', 'parad0', 'parad1', 'parad2'), ('1', '12', '34', '56'), ('2', '23', '45', '67')) expectation = (('id', 'parasitaemia', 'day'), ('1', '12', '0'), ('1', '34', '1'), ('1', '56', '2'), ('2', '23', '0'), ('2', '45', '1'), ('2', '67', '2')) step1 = melt(table, key='id', valuefield='parasitaemia') step2 = capture(step1, 'variable', 'parad(\\d+)', ('day',)) ieq(expectation, step2)
def test_melt_and_split(): table = (('id', 'parad0', 'parad1', 'parad2', 'tempd0', 'tempd1', 'tempd2'), ('1', '12', '34', '56', '37.2', '37.4', '37.9'), ('2', '23', '45', '67', '37.1', '37.8', '36.9')) expectation = (('id', 'value', 'variable', 'day'), ('1', '12', 'para', '0'), ('1', '34', 'para', '1'), ('1', '56', 'para', '2'), ('1', '37.2', 'temp', '0'), ('1', '37.4', 'temp', '1'), ('1', '37.9', 'temp', '2'), ('2', '23', 'para', '0'), ('2', '45', 'para', '1'), ('2', '67', 'para', '2'), ('2', '37.1', 'temp', '0'), ('2', '37.8', 'temp', '1'), ('2', '36.9', 'temp', '2')) step1 = melt(table, key='id') step2 = split(step1, 'variable', 'd', ('variable', 'day')) ieq(expectation, step2)
def test_melt_empty(): table = (('foo', 'bar', 'baz'),) expect = (('foo', 'variable', 'value'),) actual = melt(table, key='foo') ieq(expect, actual)