Skip to content

Commit

Permalink
Merge 78cb444 into 6aa94b2
Browse files Browse the repository at this point in the history
  • Loading branch information
nbokulich committed Apr 26, 2019
2 parents 6aa94b2 + 78cb444 commit 3479f73
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 8 deletions.
12 changes: 9 additions & 3 deletions q2_feature_table/_merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def merge(tables: biom.Table,
(overlap_method, ', '.join(overlap_methods())))


def _merge_feature_data(data: pd.Series) -> pd.Series:
def _merge_feature_data(data):
data = iter(data)
result = next(data) # There is always at least 1
for d in data:
Expand All @@ -66,5 +66,11 @@ def merge_seqs(data: pd.Series) -> pd.Series:
return _merge_feature_data(data)


def merge_taxa(data: pd.Series) -> pd.Series:
return _merge_feature_data(data)
def merge_taxa(data: pd.DataFrame) -> pd.DataFrame:
data = _merge_feature_data(data)
# merge orders columns alphabetically; Taxon must be first header column
# as defined here: https://github.com/qiime2/q2-types/blob/
# 067d83e2aefe98674433e95162336fb5b9d96474/q2_types/feature_data/
# _format.py#L97
data = data[data.columns.drop('Taxon').insert(0, 'Taxon')]
return data
15 changes: 10 additions & 5 deletions q2_feature_table/tests/test_merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,15 +286,20 @@ def test_merge_seqs(self):
class MergeFeatureTaxonomyTests(unittest.TestCase):
# More extensive testing is performed in MergeFeatureDataTests, which
# tests the shared private API.
# This tests a specifically FeatureData[Taxonomy]-like dataframe
# and ensures delivery in valid format (Taxon column first)

def test_merge_taxa(self):
# this test calls the public API directly
d1 = pd.Series(['a;b;c;d', 'a;b;c;e'], index=['f1', 'f2'])
d2 = pd.Series(['a;b;c;d', 'a;b;c;e'], index=['f1', 'f3'])
d1 = pd.DataFrame([('a;b;c;d', '1.0'), ('a;b;c;f', '0.7')],
index=['f1', 'f2'], columns=['Taxon', 'Confidence'])
d2 = pd.DataFrame([('1.0', 'a;b;c;g'), ('1.0', 'a;b;c;e')],
index=['f1', 'f3'], columns=['Confidence', 'Taxon'])
obs = merge_taxa([d1, d2])
exp = pd.Series(['a;b;c;d', 'a;b;c;e', 'a;b;c;e'],
index=['f1', 'f2', 'f3'])
pdt.assert_series_equal(obs, exp)
exp = pd.DataFrame(
[('a;b;c;d', '1.0'), ('a;b;c;f', '0.7'), ('a;b;c;e', '1.0')],
index=['f1', 'f2', 'f3'], columns=['Taxon', 'Confidence'])
pdt.assert_frame_equal(obs, exp)


if __name__ == "__main__":
Expand Down

0 comments on commit 3479f73

Please sign in to comment.