def test_ranks_specific(self):
        exp_1 = pd.DataFrame([['c', 'sample-1', 1.], ['g', 'sample-1', 2]],
                             columns=['Taxon', 'Sample ID', 'Rank'])
        exp_2 = pd.DataFrame([['c', 'sample-2', 1.]],
                             columns=['Taxon', 'Sample ID', 'Rank'])
        exp_3 = pd.DataFrame([['c', 'sample-3', 2.], ['g', 'sample-3', 1]],
                             columns=['Taxon', 'Sample ID', 'Rank'])

        taxonomy = Taxonomy(self.table, self.taxonomy_df, rank_level=2)

        obs_1 = taxonomy.ranks_specific('sample-1')
        obs_2 = taxonomy.ranks_specific('sample-2')
        obs_3 = taxonomy.ranks_specific('sample-3')

        self._clean_sort_df(obs_1, ['Taxon', 'Sample ID'])
        self._clean_sort_df(obs_2, ['Taxon', 'Sample ID'])
        self._clean_sort_df(obs_3, ['Taxon', 'Sample ID'])

        self._clean_sort_df(exp_1, ['Taxon', 'Sample ID'])
        self._clean_sort_df(exp_2, ['Taxon', 'Sample ID'])
        self._clean_sort_df(exp_3, ['Taxon', 'Sample ID'])

        pdt.assert_frame_equal(obs_1, exp_1, check_like=True)
        pdt.assert_frame_equal(obs_2, exp_2, check_like=True)
        pdt.assert_frame_equal(obs_3, exp_3, check_like=True)
 def test_ranks_specific_missing_id(self):
     taxonomy = Taxonomy(self.table, self.taxonomy_df, rank_level=2)
     with self.assertRaisesRegex(UnknownID, 'foobar'):
         taxonomy.ranks_specific('foobar')