diff --git a/qiita_db/analysis.py b/qiita_db/analysis.py index 1d9f3b764..07d611ae4 100644 --- a/qiita_db/analysis.py +++ b/qiita_db/analysis.py @@ -429,15 +429,17 @@ def mapping_file(self): Returns ------- - str or None - full filepath to the mapping file or None if not generated + int or None + The filepath id of the analysis mapping file or None + if not generated """ - fp = [fp for _, fp, fp_type in qdb.util.retrieve_filepaths( - "analysis_filepath", "analysis_id", self._id) - if fp_type == 'plain_text'] + fp = [fp_id + for fp_id, _, fp_type in qdb.util.retrieve_filepaths( + "analysis_filepath", "analysis_id", self._id) + if fp_type == 'plain_text'] if fp: - # returning the actual path vs. an array + # returning the actual filepath id vs. an array return fp[0] else: return None diff --git a/qiita_db/handlers/analysis.py b/qiita_db/handlers/analysis.py index 4a311a512..7630b6021 100644 --- a/qiita_db/handlers/analysis.py +++ b/qiita_db/handlers/analysis.py @@ -59,7 +59,8 @@ def get(self, analysis_id): """ with qdb.sql_connection.TRN: a = _get_analysis(analysis_id) - mf_fp = a.mapping_file + mf_fp = qdb.util.get_filepath_information( + a.mapping_file)['fullpath'] response = None if mf_fp is not None: df = qdb.metadata_template.util.load_template_to_dataframe( diff --git a/qiita_db/test/test_analysis.py b/qiita_db/test/test_analysis.py index b6e6eb46a..21dc77641 100644 --- a/qiita_db/test/test_analysis.py +++ b/qiita_db/test/test_analysis.py @@ -290,7 +290,9 @@ def test_set_pmid(self): def test_retrieve_mapping_file(self): exp = join(self.fp, "1_analysis_mapping.txt") obs = self.analysis.mapping_file - self.assertEqual(obs, exp) + self.assertIsNotNone(obs) + self.assertEqual( + qdb.util.get_filepath_information(obs)['fullpath'], exp) self.assertTrue(exists(exp)) def test_retrieve_tgz(self): @@ -370,7 +372,8 @@ def test_build_mapping_file(self): npt.assert_warns(qdb.exceptions.QiitaDBWarning, analysis._build_mapping_file, samples) - obs = analysis.mapping_file + obs = qdb.util.get_filepath_information( + analysis.mapping_file)['fullpath'] exp = self.get_fp("%s_analysis_mapping.txt" % analysis.id) self.assertEqual(obs, exp) @@ -388,8 +391,10 @@ def test_build_mapping_file_duplicated_samples_no_merge(self): npt.assert_warns(qdb.exceptions.QiitaDBWarning, analysis._build_mapping_file, samples, True) + mapping_fp = qdb.util.get_filepath_information( + analysis.mapping_file)['fullpath'] obs = qdb.metadata_template.util.load_template_to_dataframe( - analysis.mapping_file, index='#SampleID') + mapping_fp, index='#SampleID') exp = qdb.metadata_template.util.load_template_to_dataframe( self.duplicated_samples_not_merged, index='#SampleID') @@ -405,8 +410,10 @@ def test_build_mapping_file_duplicated_samples_merge(self): 3: ['1.SKB8.640193', '1.SKD8.640184', '1.SKB7.640196']} npt.assert_warns(qdb.exceptions.QiitaDBWarning, analysis._build_mapping_file, samples) + mapping_fp = qdb.util.get_filepath_information( + analysis.mapping_file)['fullpath'] obs = qdb.metadata_template.util.load_template_to_dataframe( - analysis.mapping_file, index='#SampleID') + mapping_fp, index='#SampleID') exp = qdb.metadata_template.util.load_template_to_dataframe( self.map_exp_fp, index='#SampleID') assert_frame_equal(obs, exp) @@ -460,8 +467,10 @@ def test_build_files(self): # testing that the generated files have the same sample ids biom_fp = biom_tables[0][1] biom_ids = load_table(biom_fp).ids(axis='sample') + mapping_fp = qdb.util.get_filepath_information( + analysis.mapping_file)['fullpath'] mf_ids = qdb.metadata_template.util.load_template_to_dataframe( - analysis.mapping_file, index='#SampleID').index + mapping_fp, index='#SampleID').index self.assertItemsEqual(biom_ids, mf_ids) @@ -493,8 +502,11 @@ def test_build_files_merge_duplicated_sample_ids(self): biom_ids = [] for _, fp in biom_tables: biom_ids.extend(load_table(fp).ids(axis='sample')) + + mapping_fp = qdb.util.get_filepath_information( + new.mapping_file)['fullpath'] mf_ids = qdb.metadata_template.util.load_template_to_dataframe( - new.mapping_file, index='#SampleID').index + mapping_fp, index='#SampleID').index self.assertItemsEqual(biom_ids, mf_ids) diff --git a/qiita_pet/handlers/analysis_handlers/base_handlers.py b/qiita_pet/handlers/analysis_handlers/base_handlers.py index cfe88e94b..de76eb5cd 100644 --- a/qiita_pet/handlers/analysis_handlers/base_handlers.py +++ b/qiita_pet/handlers/analysis_handlers/base_handlers.py @@ -64,6 +64,7 @@ def analysis_description_handler_get_request(analysis_id, user): return {'analysis_name': analysis.name, 'analysis_id': analysis.id, 'analysis_description': analysis.description, + 'analysis_mapping_id': analysis.mapping_file, 'alert_type': alert_type, 'alert_msg': alert_msg} diff --git a/qiita_pet/handlers/analysis_handlers/tests/test_base_handlers.py b/qiita_pet/handlers/analysis_handlers/tests/test_base_handlers.py index ecf7e0dbc..f5811c2d9 100644 --- a/qiita_pet/handlers/analysis_handlers/tests/test_base_handlers.py +++ b/qiita_pet/handlers/analysis_handlers/tests/test_base_handlers.py @@ -32,6 +32,7 @@ def test_analysis_description_handler_get_request(self): exp = {'analysis_name': 'SomeAnalysis', 'analysis_id': 1, 'analysis_description': 'A test analysis', + 'analysis_mapping_id': 16, 'alert_type': 'info', 'alert_msg': ''} self.assertEqual(obs, exp) @@ -42,6 +43,7 @@ def test_analysis_description_handler_get_request(self): exp = {'analysis_name': 'SomeAnalysis', 'analysis_id': 1, 'analysis_description': 'A test analysis', + 'analysis_mapping_id': 16, 'alert_type': 'info', 'alert_msg': 'An artifact is being deleted from this analysis'} self.assertEqual(obs, exp) @@ -54,6 +56,7 @@ def test_analysis_description_handler_get_request(self): exp = {'analysis_name': 'SomeAnalysis', 'analysis_id': 1, 'analysis_description': 'A test analysis', + 'analysis_mapping_id': 16, 'alert_type': 'danger', 'alert_msg': 'Error deleting artifact'} self.assertEqual(obs, exp) diff --git a/qiita_pet/templates/analysis_description.html b/qiita_pet/templates/analysis_description.html index 1c1ff36c5..340d4a0d0 100644 --- a/qiita_pet/templates/analysis_description.html +++ b/qiita_pet/templates/analysis_description.html @@ -242,7 +242,10 @@

{{analysis_name}} - ID {{analysis_id}} - + + {% if analysis_mapping_id is not None %} + Mapping file + {% end %}

{{analysis_description}}

Shared with: