Example #1
0
 def test_invalid_formula(self):
     md = qiime2.Metadata(pd.DataFrame(
         [[1, 'a'], [1, 'b'], [2, 'b']], columns=['number', 'letter'],
         index=pd.Index(['sample1', 'sample2', 'sample3'], name='id')))
     with self.assertRaisesRegex(ValueError, "not a column"):
         with tempfile.TemporaryDirectory() as temp_dir_name:
             adonis(temp_dir_name, self.dm, md, 'letter+fakecolumn')
Example #2
0
 def test_metadata_is_subset(self):
     md = qiime2.Metadata(pd.DataFrame(
         [[1, 'a'], [1, 'b'], [2, 'b']], columns=['number', 'letter'],
         index=pd.Index(['sample1', 'sample2', 'peanuts'], name='id')))
     with self.assertRaisesRegex(ValueError, "Missing samples"):
         with tempfile.TemporaryDirectory() as temp_dir_name:
             adonis(temp_dir_name, self.dm, md, 'letter+number')
Example #3
0
 def test_metadata_is_superset(self):
     md = qiime2.Metadata(pd.DataFrame(
         [[1, 'a'], [1, 'b'], [2, 'b'], [2, 'a']],
         columns=['number', 'letter'],
         index=pd.Index(['sample1', 'sample2', 'sample3', 'F'], name='id')))
     with tempfile.TemporaryDirectory() as temp_dir_name:
         adonis(temp_dir_name, self.dm, md, 'letter+number')
Example #4
0
 def test_adonis_handles_single_quotes_in_metadata(self):
     md = qiime2.Metadata(pd.DataFrame(
         [[1, 'a\'s'], [1, 'b\'s'], [2, 'b\'s'], [2, 'a\'s']],
         columns=['number', 'letter'],
         index=pd.Index(['sample1', 'sample2', 'sample3', 'F'], name='id')))
     with tempfile.TemporaryDirectory() as temp_dir_name:
         adonis(temp_dir_name, self.dm, md, 'letter+number')
Example #5
0
 def test_metadata_index_rename(self):
     md = qiime2.Metadata(
         pd.DataFrame([[1, 'a'], [1, 'b'], [2, 'b'], [2, 'a']],
                      columns=['number', 'letter'],
                      index=pd.Index(['sample1', 'sample2', 'sample3', 'F'],
                                     name='#SampleID')))
     with tempfile.TemporaryDirectory() as temp_dir_name:
         adonis(temp_dir_name, self.dm, md, 'letter+number')
Example #6
0
 def test_adonis_handles_single_quotes_in_metadata(self):
     md = qiime2.Metadata(
         pd.DataFrame([[1, 'a\'s'], [1, 'b\'s'], [2, 'b\'s'], [2, 'a\'s']],
                      columns=['number', 'letter'],
                      index=pd.Index(['sample1', 'sample2', 'sample3', 'F'],
                                     name='id')))
     with tempfile.TemporaryDirectory() as temp_dir_name:
         adonis(temp_dir_name, self.dm, md, 'letter+number')
Example #7
0
 def test_invalid_formula(self):
     md = qiime2.Metadata(
         pd.DataFrame([[1, 'a'], [1, 'b'], [2, 'b']],
                      columns=['number', 'letter'],
                      index=pd.Index(['sample1', 'sample2', 'sample3'],
                                     name='id')))
     with self.assertRaisesRegex(ValueError, "not a column"):
         with tempfile.TemporaryDirectory() as temp_dir_name:
             adonis(temp_dir_name, self.dm, md, 'letter+fakecolumn')
Example #8
0
 def test_metadata_is_subset(self):
     md = qiime2.Metadata(
         pd.DataFrame([[1, 'a'], [1, 'b'], [2, 'b']],
                      columns=['number', 'letter'],
                      index=pd.Index(['sample1', 'sample2', 'peanuts'],
                                     name='id')))
     with self.assertRaisesRegex(ValueError, "Missing samples"):
         with tempfile.TemporaryDirectory() as temp_dir_name:
             adonis(temp_dir_name, self.dm, md, 'letter+number')
Example #9
0
 def test_nans_in_unused_column(self):
     md = qiime2.Metadata(
         pd.DataFrame([[1, 'a'], [1, 'b'], [np.nan, 'b']],
                      columns=['number', 'letter'],
                      index=pd.Index(['sample1', 'sample2', 'sample3'],
                                     name='id')))
     with redirected_stdio(stderr=os.devnull):
         with tempfile.TemporaryDirectory() as temp_dir_name:
             adonis(temp_dir_name, self.dm, md, 'letter+letter')
Example #10
0
 def test_nans_in_formula_column(self):
     md = qiime2.Metadata(
         pd.DataFrame([[1, 'a'], [1, 'b'], [np.nan, 'b']],
                      columns=['number', 'letter'],
                      index=pd.Index(['sample1', 'sample2', 'sample3'],
                                     name='id')))
     with redirected_stdio(stderr=os.devnull):
         with self.assertRaisesRegex(ValueError, "no NaN values.*`number`"):
             with tempfile.TemporaryDirectory() as temp_dir_name:
                 adonis(temp_dir_name, self.dm, md, 'letter+number')
Example #11
0
    def test_execute_and_validate_output(self):
        md = qiime2.Metadata(pd.DataFrame(
            [[1, 'a'], [1, 'b'], [2, 'b']], columns=['number', 'letter'],
            index=pd.Index(['sample1', 'sample2', 'sample3'], name='id')))

        exp = pd.DataFrame(
            [[1.0, 0.322916667, 0.322916667, 0.0, 0.534482759, 1.0],
             [1.0, 0.281250000, 0.281250000, 0.0, 0.465517241, 1.0],
             [0.0, -1.403048e-18, -np.Infinity, np.nan, -2.322286e-18, np.nan],
             [2.0, 0.604166667, np.nan, np.nan, 1.0, np.nan]],
            columns=['Df', 'SumsOfSqs', 'MeanSqs', 'F.Model', 'R2', 'Pr(>F)'],
            index=['letter', 'number', 'Residuals', 'Total'])

        with tempfile.TemporaryDirectory() as temp_dir_name:
            adonis(temp_dir_name, self.dm, md, 'letter+number')

            with open(os.path.join(temp_dir_name, 'adonis.tsv'), 'r') as fh:
                res = pd.read_csv(fh, sep='\t')
                pdt.assert_frame_equal(
                    res, exp, check_dtype=False, check_frame_type=False)
Example #12
0
    def test_execute_and_validate_output(self):
        md = qiime2.Metadata(
            pd.DataFrame([[1, 'a'], [1, 'b'], [2, 'b']],
                         columns=['number', 'letter'],
                         index=pd.Index(['sample1', 'sample2', 'sample3'],
                                        name='id')))

        exp = pd.DataFrame(
            [[1.0, 0.322916667, 0.322916667, 0.0, 0.534482759, 1.0],
             [1.0, 0.281250000, 0.281250000, 0.0, 0.465517241, 1.0],
             [0.0, -1.403048e-18, -np.Infinity, np.nan, -2.322286e-18, np.nan],
             [2.0, 0.604166667, np.nan, np.nan, 1.0, np.nan]],
            columns=['Df', 'SumsOfSqs', 'MeanSqs', 'F.Model', 'R2', 'Pr(>F)'],
            index=['letter', 'number', 'Residuals', 'Total'])

        with tempfile.TemporaryDirectory() as temp_dir_name:
            adonis(temp_dir_name, self.dm, md, 'letter+number')

            with open(os.path.join(temp_dir_name, 'adonis.tsv'), 'r') as fh:
                res = pd.read_csv(fh, sep='\t')
                pdt.assert_frame_equal(res,
                                       exp,
                                       check_dtype=False,
                                       check_frame_type=False)