def test_validate_representative_set(self):
        sample_ids = ['1.SKB2.640194', '1.SKM4.640180', '1.SKB3.640195',
                      '1.SKB6.640176', '1.SKD6.640190', '1.SKM6.640187',
                      '1.SKD9.640182', '1.SKM8.640201', '1.SKM2.640199']
        biom_fp, job_id, parameters = self._create_job_and_biom(
            sample_ids, template=1)

        fd, fasta_fp = mkstemp(suffix=".fna")
        close(fd)
        with open(fasta_fp, 'w') as f:
            f.write(">O1 something\nACTG\n>O2\nATGC\n")
        self._clean_up_files.append(fasta_fp)
        exp_fp = partial(join, self.out_dir)
        exp_index_fp = exp_fp('index.html')
        exp_viz_fp = exp_fp('support_files')
        exp_qza_fp = exp_fp('feature-table.qza')
        with open(exp_index_fp, 'w') as f:
            f.write("my html")
        mkdir(exp_viz_fp)

        parameters = {'template': parameters['template'],
                      'files': dumps({'biom': [biom_fp],
                                      'preprocessed_fasta': [fasta_fp]}),
                      'artifact_type': 'BIOM'}

        obs_success, obs_ainfo, obs_error = validate(
            self.qclient, job_id, parameters, self.out_dir)
        self.assertTrue(obs_success)
        files = [(biom_fp, 'biom'), (fasta_fp, 'preprocessed_fasta'),
                 (exp_index_fp, 'html_summary'),
                 (exp_viz_fp, 'html_summary_dir'),
                 (exp_qza_fp, 'qza')]
        self.assertEqual(
            obs_ainfo, [ArtifactInfo(None, 'BIOM',  files)])
        self.assertEqual(obs_error, "")

        # Extra ids
        with open(fasta_fp, 'w') as f:
            f.write(">O1 something\nACTG\n>O2\nATGC\n>O3\nATGC\n")
        obs_success, obs_ainfo, obs_error = validate(
            self.qclient, job_id, parameters, self.out_dir)
        self.assertFalse(obs_success)
        self.assertIsNone(obs_ainfo)
        self.assertEqual(
            obs_error,
            "The representative set sequence file includes observations not "
            "found in the BIOM table: O3")

        # Missing ids
        with open(fasta_fp, 'w') as f:
            f.write(">O1 something\nACTG\n")
        obs_success, obs_ainfo, obs_error = validate(
            self.qclient, job_id, parameters, self.out_dir)
        self.assertFalse(obs_success)
        self.assertIsNone(obs_ainfo)
        self.assertEqual(
            obs_error,
            "The representative set sequence file is missing observation ids "
            "found in the BIOM tabe: O2")
Exemple #2
0
    def test_validate_representative_set(self):
        sample_ids = [
            '1.SKB2.640194', '1.SKM4.640180', '1.SKB3.640195', '1.SKB6.640176',
            '1.SKD6.640190', '1.SKM6.640187', '1.SKD9.640182', '1.SKM8.640201',
            '1.SKM2.640199'
        ]
        biom_fp, job_id, parameters = self._create_job_and_biom(sample_ids,
                                                                template=1)

        fd, fasta_fp = mkstemp(suffix=".fna")
        close(fd)
        with open(fasta_fp, 'w') as f:
            f.write(">O1 something\nACTG\n>O2\nATGC\n")
        self._clean_up_files.append(fasta_fp)

        parameters = {
            'template': parameters['template'],
            'files': dumps({
                'biom': [biom_fp],
                'preprocessed_fasta': [fasta_fp]
            }),
            'artifact_type': 'BIOM'
        }

        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        self.assertTrue(obs_success)
        files = [(biom_fp, 'biom'), (fasta_fp, 'preprocessed_fasta')]
        self.assertEqual(obs_ainfo, [ArtifactInfo(None, 'BIOM', files)])
        self.assertEqual(obs_error, "")

        # Extra ids
        with open(fasta_fp, 'w') as f:
            f.write(">O1 something\nACTG\n>O2\nATGC\n>O3\nATGC\n")
        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        self.assertFalse(obs_success)
        self.assertIsNone(obs_ainfo)
        self.assertEqual(
            obs_error,
            "The representative set sequence file includes observations not "
            "found in the BIOM table: O3")

        # Missing ids
        with open(fasta_fp, 'w') as f:
            f.write(">O1 something\nACTG\n")
        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        self.assertFalse(obs_success)
        self.assertIsNone(obs_ainfo)
        self.assertEqual(
            obs_error,
            "The representative set sequence file is missing observation ids "
            "found in the BIOM tabe: O2")
    def test_validate_phylogeny(self):
        # Create a new job
        fp_support_files = join('qtp_biom', 'support_files')
        filepaths = {
            'biom': [join(fp_support_files, 'sepp.biom')],
            'preprocessed_fasta': [join(fp_support_files, 'sepp.fa')],
            'plain_text': [join(fp_support_files, 'sepp.tre')]
        }
        parameters = {
            'template': 1,
            'files': dumps(filepaths),
            'artifact_type': 'BIOM',
            'analysis': 1
        }
        data = {
            'command': dumps(['BIOM type', '2.1.4 - Qiime2', 'Validate']),
            'parameters': dumps(parameters),
            'status': 'running'
        }
        res = self.qclient.post('/apitest/processing_job/', data=data)
        job_id = res['job']

        # test validation on valid data
        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        self.assertTrue(obs_success)
        for ft, fp in filepaths.items():
            self.assertTrue((fp[0], ft) in obs_ainfo[0].files)
        self.assertEqual(obs_error, '')

        # test that validation failes if tree is no Newick file, i.e. not
        # parsable by skbio
        filepaths['plain_text'] = [join(fp_support_files, 'sepp.fa')]
        parameters = {
            'template': 1,
            'files': dumps(filepaths),
            'artifact_type': 'BIOM',
            'analysis': 1
        }
        data = {
            'command': dumps(['BIOM type', '2.1.4 - Qiime2', 'Validate']),
            'parameters': dumps(parameters),
            'status': 'running'
        }
        res = self.qclient.post('/apitest/processing_job/', data=data)
        job_id = res['job']
        # test validation on valid data
        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        self.assertFalse(obs_success)
        self.assertEqual(obs_ainfo, None)
        self.assertEqual(obs_error,
                         'Phylogenetic tree cannot be parsed via scikit-biom')
    def test_validate_prefix(self):
        prep_info = {
            'SKB8.640193': {'col': 'val1'},
            'SKD8.640184': {'col': 'val2'}}
        data = {'prep_info': dumps(prep_info),
                'study': 1,
                'data_type': '16S'}
        res = self.qclient.post('/apitest/prep_template/', data=data)

        sample_ids = ['SKB8.640193', 'SKD8.640184']
        biom_fp, job_id, parameters = self._create_job_and_biom(
            sample_ids, template=res['prep'])

        obs_success, obs_ainfo, obs_error = validate(
            self.qclient, job_id, parameters, self.out_dir)
        exp_fp = partial(join, self.out_dir)
        exp_biom_fp = exp_fp(basename(biom_fp))
        exp_index_fp = exp_fp('index.html')
        exp_viz_fp = exp_fp('support_files')
        exp_qza_fp = exp_fp('feature-table.qza')

        self._clean_up_files.append(exp_biom_fp)
        self.assertTrue(obs_success)
        self.assertEqual(
            obs_ainfo, [ArtifactInfo(None, 'BIOM', [
                (exp_biom_fp, 'biom'), (exp_index_fp, 'html_summary'),
                (exp_viz_fp, 'html_summary_dir'), (exp_qza_fp, 'qza')])])
        self.assertEqual(obs_error, "")
        obs_t = load_table(exp_biom_fp)
        self.assertCountEqual(obs_t.ids(), ['1.SKB8.640193', '1.SKD8.640184'])
Exemple #5
0
    def test_validate_prefix(self):
        prep_info = {
            'SKB8.640193': {
                'col': 'val1'
            },
            'SKD8.640184': {
                'col': 'val2'
            }
        }
        data = {'prep_info': dumps(prep_info), 'study': 1, 'data_type': '16S'}
        res = self.qclient.post('/apitest/prep_template/', data=data)

        sample_ids = ['SKB8.640193', 'SKD8.640184']
        biom_fp, job_id, parameters = self._create_job_and_biom(
            sample_ids, template=res['prep'])

        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        exp_biom_fp = join(self.out_dir, basename(biom_fp))
        self._clean_up_files.append(exp_biom_fp)
        self.assertTrue(obs_success)
        self.assertEqual(obs_ainfo,
                         [ArtifactInfo(None, 'BIOM', [(exp_biom_fp, 'biom')])])
        self.assertEqual(obs_error, "")
        obs_t = load_table(exp_biom_fp)
        self.assertCountEqual(obs_t.ids(), ['1.SKB8.640193', '1.SKD8.640184'])
Exemple #6
0
    def test_validate_unknown_samples(self):
        prep_info = {
            'SKB8.640193': {
                'col': 'val1'
            },
            'SKD8.640184': {
                'col': 'val2'
            }
        }
        data = {'prep_info': dumps(prep_info), 'study': 1, 'data_type': '16S'}
        res = self.qclient.post('/apitest/prep_template/', data=data)

        sample_ids = ['Sample1', 'Sample2', 'Sample3']
        biom_fp, job_id, parameters = self._create_job_and_biom(
            sample_ids, template=res['prep'])

        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        self.assertFalse(obs_success)
        self.assertIsNone(obs_ainfo)
        exp = ('The sample ids in the BIOM table do not match the ones in the '
               'prep information. Please, provide the column "run_prefix" in '
               'the prep information to map the existing sample ids to the '
               'prep information sample ids.')
        self.assertEqual(obs_error, exp)
    def test_validate_run_prefix(self):
        prep_info = {
            'SKB8.640193': {
                'col': 'val1',
                'run_prefix': 'Sample1'
            },
            'SKD8.640184': {
                'col': 'val2',
                'run_prefix': 'Sample2'
            }
        }
        data = {'prep_info': dumps(prep_info), 'study': 1, 'data_type': '16S'}
        res = self.qclient.post('/apitest/prep_template/', data=data)

        sample_ids = ['Sample1', 'Sample2']
        biom_fp, job_id, parameters = self._create_job_and_biom(
            sample_ids, template=res['prep'])
        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        exp_fp = partial(join, self.out_dir)
        exp_biom_fp = exp_fp(basename(biom_fp))
        exp_index_fp = exp_fp('index.html')
        exp_viz_fp = exp_fp('support_files')
        exp_qza_fp = exp_fp('feature-table.qza')
        self._clean_up_files.append(exp_biom_fp)
        self.assertTrue(obs_success)
        self.assertEqual(obs_ainfo, [
            ArtifactInfo(None, 'BIOM', [(exp_biom_fp, 'biom'),
                                        (exp_index_fp, 'html_summary'),
                                        (exp_viz_fp, 'html_summary_dir'),
                                        (exp_qza_fp, 'qza')])
        ])
        self.assertEqual(obs_error, "")
        obs_t = load_table(exp_biom_fp)
        self.assertCountEqual(obs_t.ids(), ["1.SKB8.640193", "1.SKD8.640184"])
Exemple #8
0
 def test_validate_analysis(self):
     sample_ids = ['1.SKM4.640180', '1.SKB8.640193', '1.SKD8.640184',
                   '1.SKM9.640192', '1.SKB7.640196']
     biom_fp, job_id, parameters = self._create_job_and_biom(
         sample_ids, analysis=1)
     obs_success, obs_ainfo, obs_error = validate(
         self.qclient, job_id, parameters, self.out_dir)
    def test_validate_no_changes(self):
        sample_ids = [
            '1.SKB2.640194', '1.SKM4.640180', '1.SKB3.640195', '1.SKB6.640176',
            '1.SKD6.640190', '1.SKM6.640187', '1.SKD9.640182', '1.SKM8.640201',
            '1.SKM2.640199', '1.SKD2.640178', '1.SKB7.640196', '1.SKD4.640185',
            '1.SKB8.640193', '1.SKM3.640197', '1.SKD5.640186', '1.SKB1.640202',
            '1.SKM1.640183', '1.SKD1.640179', '1.SKD3.640198', '1.SKB5.640181',
            '1.SKB4.640189', '1.SKB9.640200', '1.SKM9.640192', '1.SKD8.640184',
            '1.SKM5.640177', '1.SKM7.640188', '1.SKD7.640191'
        ]
        biom_fp, job_id, parameters = self._create_job_and_biom(sample_ids,
                                                                template=1)

        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        exp_fp = partial(join, self.out_dir)
        exp_index_fp = exp_fp('index.html')
        exp_viz_fp = exp_fp('support_files')
        exp_qza_fp = exp_fp('feature-table.qza')
        self.assertTrue(obs_success)
        self.assertEqual(obs_ainfo, [
            ArtifactInfo(None, 'BIOM', [(biom_fp, 'biom'),
                                        (exp_index_fp, 'html_summary'),
                                        (exp_viz_fp, 'html_summary_dir'),
                                        (exp_qza_fp, 'qza')])
        ])
        self.assertEqual(obs_error, "")
Exemple #10
0
    def test_validate_no_changes(self):
        sample_ids = ['1.SKB2.640194', '1.SKM4.640180', '1.SKB3.640195',
                      '1.SKB6.640176', '1.SKD6.640190', '1.SKM6.640187',
                      '1.SKD9.640182', '1.SKM8.640201', '1.SKM2.640199',
                      '1.SKD2.640178', '1.SKB7.640196', '1.SKD4.640185',
                      '1.SKB8.640193', '1.SKM3.640197', '1.SKD5.640186',
                      '1.SKB1.640202', '1.SKM1.640183', '1.SKD1.640179',
                      '1.SKD3.640198', '1.SKB5.640181', '1.SKB4.640189',
                      '1.SKB9.640200', '1.SKM9.640192', '1.SKD8.640184',
                      '1.SKM5.640177', '1.SKM7.640188', '1.SKD7.640191']
        biom_fp, job_id, parameters = self._create_job_and_biom(
            sample_ids, template=1)

        obs_success, obs_ainfo, obs_error = validate(
            self.qclient, job_id, parameters, self.out_dir)
        exp_fp = partial(join, self.out_dir)
        exp_index_fp = exp_fp('index.html')
        exp_viz_fp = exp_fp('support_files')
        exp_qza_fp = exp_fp('feature-table.qza')
        self.assertTrue(obs_success)
        self.assertEqual(
            obs_ainfo, [ArtifactInfo(None, 'BIOM', [
                (biom_fp, 'biom'), (exp_index_fp, 'html_summary'),
                (exp_viz_fp, 'html_summary_dir'), (exp_qza_fp, 'qza')])])
        self.assertEqual(obs_error, "")
Exemple #11
0
    def test_validate_missing_samples(self):
        prep_info = {
            'SKB8.640193': {
                'col': 'val1',
                'run_prefix': 'Sample1'
            },
            'SKD8.640184': {
                'col': 'val2',
                'run_prefix': 'Sample2'
            }
        }
        data = {'prep_info': dumps(prep_info), 'study': 1, 'data_type': '16S'}
        res = self.qclient.post('/apitest/prep_template/', data=data)

        sample_ids = ['Sample1', 'Sample2', 'New.Sample']
        biom_fp, job_id, parameters = self._create_job_and_biom(
            sample_ids, template=res['prep'])

        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        self.assertFalse(obs_success)
        self.assertIsNone(obs_ainfo)
        exp = ('Your prep information is missing samples that are present in '
               'your BIOM table: New.Sample')
        self.assertEqual(obs_error, exp)
Exemple #12
0
 def test_validate_unknown_type(self):
     parameters = {'template': 1, 'files': dumps({'BIOM': ['ignored']}),
                   'artifact_type': 'UNKNOWN'}
     obs_success, obs_ainfo, obs_error = validate(
         self.qclient, 'job-id', parameters, self.out_dir)
     self.assertFalse(obs_success)
     self.assertIsNone(obs_ainfo)
     exp = 'Unknown artifact type UNKNOWN. Supported types: BIOM'
     self.assertEqual(obs_error, exp)
Exemple #13
0
 def test_validate_analysis(self):
     sample_ids = [
         '1.SKM4.640180', '1.SKB8.640193', '1.SKD8.640184', '1.SKM9.640192',
         '1.SKB7.640196'
     ]
     biom_fp, job_id, parameters = self._create_job_and_biom(sample_ids,
                                                             analysis=1)
     obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                  parameters, self.out_dir)
Exemple #14
0
    def test_validate_phylogeny(self):
        # Create a new job
        fp_support_files = join('qtp_biom', 'support_files')
        filepaths = {'biom': [join(fp_support_files, 'sepp.biom')],
                     'preprocessed_fasta': [join(fp_support_files, 'sepp.fa')],
                     'plain_text': [join(fp_support_files, 'sepp.tre')]}
        parameters = {'template': 1,
                      'files': dumps(filepaths),
                      'artifact_type': 'BIOM',
                      'analysis': 1}
        data = {'command': dumps(['BIOM type', '2.1.4 - Qiime2', 'Validate']),
                'parameters': dumps(parameters),
                'status': 'running'}
        res = self.qclient.post('/apitest/processing_job/', data=data)
        job_id = res['job']

        # test validation on valid data
        obs_success, obs_ainfo, obs_error = validate(
            self.qclient, job_id, parameters, self.out_dir)
        self.assertTrue(obs_success)
        for ft, fp in filepaths.items():
            self.assertTrue((fp[0], ft) in obs_ainfo[0].files)
        self.assertEqual(obs_error, '')

        # test that validation failes if tree is no Newick file, i.e. not
        # parsable by skbio
        filepaths['plain_text'] = [join(fp_support_files, 'sepp.fa')]
        parameters = {'template': 1,
                      'files': dumps(filepaths),
                      'artifact_type': 'BIOM',
                      'analysis': 1}
        data = {'command': dumps(['BIOM type', '2.1.4 - Qiime2', 'Validate']),
                'parameters': dumps(parameters),
                'status': 'running'}
        res = self.qclient.post('/apitest/processing_job/', data=data)
        job_id = res['job']
        # test validation on valid data
        obs_success, obs_ainfo, obs_error = validate(
            self.qclient, job_id, parameters, self.out_dir)
        self.assertFalse(obs_success)
        self.assertEqual(obs_ainfo, None)
        self.assertEqual(
            obs_error, 'Phylogenetic tree cannot be parsed via scikit-biom')
Exemple #15
0
 def test_validate_no_changes_superset(self):
     sample_ids = ['1.SKB2.640194', '1.SKM4.640180', '1.SKB3.640195',
                   '1.SKB6.640176', '1.SKD6.640190', '1.SKM6.640187',
                   '1.SKD9.640182', '1.SKM8.640201', '1.SKM2.640199']
     biom_fp, job_id, parameters = self._create_job_and_biom(
         sample_ids, template=1)
     obs_success, obs_ainfo, obs_error = validate(
         self.qclient, job_id, parameters, self.out_dir)
     self.assertTrue(obs_success)
     self.assertEqual(
         obs_ainfo, [ArtifactInfo(None, 'BIOM', [(biom_fp, 'biom')])])
     self.assertEqual(obs_error, "")
Exemple #16
0
 def test_validate_unknown_type(self):
     parameters = {
         'template': 1,
         'files': dumps({'BIOM': ['ignored']}),
         'artifact_type': 'UNKNOWN'
     }
     obs_success, obs_ainfo, obs_error = validate(self.qclient, 'job-id',
                                                  parameters, self.out_dir)
     self.assertFalse(obs_success)
     self.assertIsNone(obs_ainfo)
     exp = 'Unknown artifact type UNKNOWN. Supported types: BIOM'
     self.assertEqual(obs_error, exp)
Exemple #17
0
 def test_validate_no_changes_superset(self):
     sample_ids = [
         '1.SKB2.640194', '1.SKM4.640180', '1.SKB3.640195', '1.SKB6.640176',
         '1.SKD6.640190', '1.SKM6.640187', '1.SKD9.640182', '1.SKM8.640201',
         '1.SKM2.640199'
     ]
     biom_fp, job_id, parameters = self._create_job_and_biom(sample_ids,
                                                             template=1)
     obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                  parameters, self.out_dir)
     self.assertTrue(obs_success)
     self.assertEqual(obs_ainfo,
                      [ArtifactInfo(None, 'BIOM', [(biom_fp, 'biom')])])
     self.assertEqual(obs_error, "")
Exemple #18
0
 def test_validate_analysis(self):
     sample_ids = ['1.SKM4.640180', '1.SKB8.640193', '1.SKD8.640184',
                   '1.SKM9.640192', '1.SKB7.640196']
     biom_fp, job_id, parameters = self._create_job_and_biom(
         sample_ids, analysis=1)
     obs_success, obs_ainfo, obs_error = validate(
         self.qclient, job_id, parameters, self.out_dir)
     exp_fp = partial(join, self.out_dir)
     exp_index_fp = exp_fp('index.html')
     exp_viz_fp = exp_fp('support_files')
     exp_qza_fp = exp_fp('feature-table.qza')
     self.assertTrue(obs_success)
     self.assertEqual(
         obs_ainfo, [ArtifactInfo(None, 'BIOM', [
             (biom_fp, 'biom'), (exp_index_fp, 'html_summary'),
             (exp_viz_fp, 'html_summary_dir'), (exp_qza_fp, 'qza')])])
     self.assertEqual(obs_error, "")
Exemple #19
0
 def test_validate_analysis(self):
     sample_ids = [
         '1.SKM4.640180', '1.SKB8.640193', '1.SKD8.640184', '1.SKM9.640192',
         '1.SKB7.640196'
     ]
     biom_fp, job_id, parameters = self._create_job_and_biom(sample_ids,
                                                             analysis=1)
     obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                  parameters, self.out_dir)
     exp_fp = partial(join, self.out_dir)
     exp_index_fp = exp_fp('index.html')
     exp_viz_fp = exp_fp('support_files')
     self.assertTrue(obs_success)
     self.assertEqual(obs_ainfo, [
         ArtifactInfo(None, 'BIOM', [(biom_fp, 'biom'),
                                     (exp_index_fp, 'html_summary'),
                                     (exp_viz_fp, 'html_summary_dir')])
     ])
     self.assertEqual(obs_error, "")
Exemple #20
0
    def test_validate_no_changes(self):
        sample_ids = [
            '1.SKB2.640194', '1.SKM4.640180', '1.SKB3.640195', '1.SKB6.640176',
            '1.SKD6.640190', '1.SKM6.640187', '1.SKD9.640182', '1.SKM8.640201',
            '1.SKM2.640199', '1.SKD2.640178', '1.SKB7.640196', '1.SKD4.640185',
            '1.SKB8.640193', '1.SKM3.640197', '1.SKD5.640186', '1.SKB1.640202',
            '1.SKM1.640183', '1.SKD1.640179', '1.SKD3.640198', '1.SKB5.640181',
            '1.SKB4.640189', '1.SKB9.640200', '1.SKM9.640192', '1.SKD8.640184',
            '1.SKM5.640177', '1.SKM7.640188', '1.SKD7.640191'
        ]
        biom_fp, job_id, parameters = self._create_job_and_biom(sample_ids,
                                                                template=1)

        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        self.assertTrue(obs_success)
        self.assertEqual(obs_ainfo,
                         [ArtifactInfo(None, 'BIOM', [(biom_fp, 'biom')])])
        self.assertEqual(obs_error, "")
Exemple #21
0
    def test_validate_no_changes(self):
        sample_ids = ['1.SKB2.640194', '1.SKM4.640180', '1.SKB3.640195',
                      '1.SKB6.640176', '1.SKD6.640190', '1.SKM6.640187',
                      '1.SKD9.640182', '1.SKM8.640201', '1.SKM2.640199',
                      '1.SKD2.640178', '1.SKB7.640196', '1.SKD4.640185',
                      '1.SKB8.640193', '1.SKM3.640197', '1.SKD5.640186',
                      '1.SKB1.640202', '1.SKM1.640183', '1.SKD1.640179',
                      '1.SKD3.640198', '1.SKB5.640181', '1.SKB4.640189',
                      '1.SKB9.640200', '1.SKM9.640192', '1.SKD8.640184',
                      '1.SKM5.640177', '1.SKM7.640188', '1.SKD7.640191']
        biom_fp, job_id, parameters = self._create_job_and_biom(
            sample_ids, template=1)

        obs_success, obs_ainfo, obs_error = validate(
            self.qclient, job_id, parameters, self.out_dir)
        self.assertTrue(obs_success)
        self.assertEqual(
            obs_ainfo, [ArtifactInfo(None, 'BIOM', [(biom_fp, 'biom')])])
        self.assertEqual(obs_error, "")
Exemple #22
0
    def test_validate_no_changes_superset(self):
        sample_ids = [
            '1.SKB2.640194', '1.SKM4.640180', '1.SKB3.640195', '1.SKB6.640176',
            '1.SKD6.640190', '1.SKM6.640187', '1.SKD9.640182', '1.SKM8.640201',
            '1.SKM2.640199'
        ]
        biom_fp, job_id, parameters = self._create_job_and_biom(sample_ids,
                                                                template=1)
        obs_success, obs_ainfo, obs_error = validate(self.qclient, job_id,
                                                     parameters, self.out_dir)
        exp_fp = partial(join, self.out_dir)
        exp_index_fp = exp_fp('index.html')
        exp_viz_fp = exp_fp('support_files')

        self.assertTrue(obs_success)
        self.assertEqual(obs_ainfo, [
            ArtifactInfo(None, 'BIOM', [(biom_fp, 'biom'),
                                        (exp_index_fp, 'html_summary'),
                                        (exp_viz_fp, 'html_summary_dir')])
        ])
        self.assertEqual(obs_error, "")
Exemple #23
0
    def test_validate_missing_samples(self):
        prep_info = {
            'SKB8.640193': {'col': 'val1',
                            'run_prefix': 'Sample1'},
            'SKD8.640184': {'col': 'val2',
                            'run_prefix': 'Sample2'}}
        data = {'prep_info': dumps(prep_info),
                'study': 1,
                'data_type': '16S'}
        res = self.qclient.post('/apitest/prep_template/', data=data)

        sample_ids = ['Sample1', 'Sample2', 'New.Sample']
        biom_fp, job_id, parameters = self._create_job_and_biom(
            sample_ids, template=res['prep'])

        obs_success, obs_ainfo, obs_error = validate(
            self.qclient, job_id, parameters, self.out_dir)
        self.assertFalse(obs_success)
        self.assertIsNone(obs_ainfo)
        exp = ('Your prep information is missing samples that are present in '
               'your BIOM table: New.Sample')
        self.assertEqual(obs_error, exp)
Exemple #24
0
    def test_validate_unknown_samples(self):
        prep_info = {
            'SKB8.640193': {'col': 'val1'},
            'SKD8.640184': {'col': 'val2'}}
        data = {'prep_info': dumps(prep_info),
                'study': 1,
                'data_type': '16S'}
        res = self.qclient.post('/apitest/prep_template/', data=data)

        sample_ids = ['Sample1', 'Sample2', 'Sample3']
        biom_fp, job_id, parameters = self._create_job_and_biom(
            sample_ids, template=res['prep'])

        obs_success, obs_ainfo, obs_error = validate(
            self.qclient, job_id, parameters, self.out_dir)
        self.assertFalse(obs_success)
        self.assertIsNone(obs_ainfo)
        exp = ('The sample ids in the BIOM table do not match the ones in the '
               'prep information. Please, provide the column "run_prefix" in '
               'the prep information to map the existing sample ids to the '
               'prep information sample ids.')
        self.assertEqual(obs_error, exp)
Exemple #25
0
    def test_validate_run_prefix(self):
        prep_info = {
            'SKB8.640193': {'col': 'val1',
                            'run_prefix': 'Sample1'},
            'SKD8.640184': {'col': 'val2',
                            'run_prefix': 'Sample2'}}
        data = {'prep_info': dumps(prep_info),
                'study': 1,
                'data_type': '16S'}
        res = self.qclient.post('/apitest/prep_template/', data=data)

        sample_ids = ['Sample1', 'Sample2']
        biom_fp, job_id, parameters = self._create_job_and_biom(
            sample_ids, template=res['prep'])
        obs_success, obs_ainfo, obs_error = validate(
            self.qclient, job_id, parameters, self.out_dir)
        exp_biom_fp = join(self.out_dir, basename(biom_fp))
        self._clean_up_files.append(exp_biom_fp)
        self.assertTrue(obs_success)
        self.assertEqual(
            obs_ainfo, [ArtifactInfo(None, 'BIOM', [(exp_biom_fp, 'biom')])])
        self.assertEqual(obs_error, "")
        obs_t = load_table(exp_biom_fp)
        self.assertCountEqual(obs_t.ids(), ["1.SKB8.640193", "1.SKD8.640184"])