From 773c8da63e8b8e0e4b9850c05a01a6128d174db8 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Sun, 20 Aug 2017 10:11:49 -0600 Subject: [PATCH 1/7] fix #2210 --- qiita_db/test/test_util.py | 18 ++++---- qiita_db/util.py | 41 +++++++++++-------- .../handlers/api_proxy/tests/test_artifact.py | 30 +++++++------- qiita_pet/templates/analysis_selected.html | 2 +- qiita_pet/templates/list_studies.html | 2 + 5 files changed, 51 insertions(+), 42 deletions(-) diff --git a/qiita_db/test/test_util.py b/qiita_db/test/test_util.py index 9ddacb845..6dba99203 100644 --- a/qiita_db/test/test_util.py +++ b/qiita_db/test/test_util.py @@ -852,19 +852,19 @@ def test_get_artifacts_information(self): exp = [ {'files': ['1_study_1001_closed_reference_otu_table.biom'], - 'target_subfragment': ['V4'], 'data_type': '18S', + 'target_subfragment': ['V4'], + 'algorithm': 'Pick closed-reference OTUs, QIIMEv1.9.1 | Defaults', + 'artifact_id': 4, 'data_type': '18S', 'prep_samples': 27, 'parameters': { 'reference': 1, 'similarity': 0.97, 'sortmerna_e_value': 1, 'sortmerna_max_pos': 10000, 'input_data': 2, 'threads': 1, - 'sortmerna_coverage': 0.97}, 'name': 'BIOM', - 'algorithm': ('Pick closed-reference OTUs, QIIMEv1.9.1 ' - '| barcode_type 8, defaults'), 'artifact_id': 4}, - {'files': [], 'target_subfragment': ['V4'], 'data_type': '16S', - 'parameters': {}, 'name': 'BIOM', 'algorithm': '', - 'artifact_id': 7}, + 'sortmerna_coverage': 0.97}, 'name': 'BIOM'}, + {'files': [], 'target_subfragment': ['V4'], 'algorithm': '', + 'artifact_id': 7L, 'data_type': '16S', 'prep_samples': 27, + 'parameters': {}, 'name': 'BIOM'}, {'files': ['biom_table.biom'], 'target_subfragment': [], - 'data_type': '18S', 'parameters': {}, 'name': 'noname', - 'algorithm': '', 'artifact_id': 8}] + 'algorithm': '', 'artifact_id': 8, 'data_type': '18S', + 'prep_samples': 0, 'parameters': {}, 'name': 'noname'}] self.assertEqual(obs, exp) diff --git a/qiita_db/util.py b/qiita_db/util.py index 6de4650ed..4adc16945 100644 --- a/qiita_db/util.py +++ b/qiita_db/util.py @@ -1382,7 +1382,7 @@ def get_artifacts_information(artifact_ids, only_biom=True): WHERE table_name = 'prep_' || CAST( prep_template_id AS TEXT) AND column_name='target_subfragment') - THEN prep_template_id ELSE NULL END + THEN prep_template_id ELSE NULL END, prep_template_id FROM main_query LEFT JOIN qiita.prep_template pt ON ( main_query.root_id = pt.artifact_id) @@ -1409,10 +1409,13 @@ def get_artifacts_information(artifact_ids, only_biom=True): qdb.sql_connection.TRN.execute_fetchindex()} # now let's get the actual artifacts + ts = {} + ps = {} + PT = qdb.metadata_template.prep_template.PrepTemplate qdb.sql_connection.TRN.add(sql, [tuple(artifact_ids)]) for row in qdb.sql_connection.TRN.execute_fetchindex(): aid, name, cid, gt, aparams, dt, pid, pparams, filepaths, _, \ - target = row + target, prep_template_id = row # cleaning fields: # - [0] due to the array_agg @@ -1449,9 +1452,27 @@ def get_artifacts_information(artifact_ids, only_biom=True): algorithm = '%s | %s' % (commands[cid], pparams) + if target is None: + target = [] + else: + if target not in ts: + qdb.sql_connection.TRN.add(sql_ts, [target]) + ts[target] = \ + qdb.sql_connection.TRN.execute_fetchflatten() + target = ts[target] + + if prep_template_id is None: + prep_samples = 0 + else: + if prep_template_id not in ps: + ps[prep_template_id] = len(list( + PT(prep_template_id).keys())) + prep_samples = ps[prep_template_id] + results.append({ 'artifact_id': aid, 'target_subfragment': target, + 'prep_samples': prep_samples, 'name': name, 'data_type': dt, 'timestamp': str(gt), @@ -1459,20 +1480,4 @@ def get_artifacts_information(artifact_ids, only_biom=True): 'algorithm': algorithm, 'files': filepaths}) - # let's get the values for target_subfragment from the - # prep_template, note that we have to do it in a separate sql - # doing crosstab is really difficult and in another loop cause we - # need to loop over all execute_fetchindex before doing another - # query - ts = {} - for i, r in enumerate(results): - pid = r['target_subfragment'] - if pid is None: - results[i]['target_subfragment'] = [] - else: - if pid not in ts: - qdb.sql_connection.TRN.add(sql_ts, [pid]) - ts[pid] = qdb.sql_connection.TRN.execute_fetchflatten() - results[i]['target_subfragment'] = ts[pid] - return results diff --git a/qiita_pet/handlers/api_proxy/tests/test_artifact.py b/qiita_pet/handlers/api_proxy/tests/test_artifact.py index 23ff33302..beafec4f3 100644 --- a/qiita_pet/handlers/api_proxy/tests/test_artifact.py +++ b/qiita_pet/handlers/api_proxy/tests/test_artifact.py @@ -223,25 +223,27 @@ def test_artifact_get_info(self): obs = artifact_get_info('test@foo.bar', [5, 6, 7]) data = [ {'files': ['1_study_1001_closed_reference_otu_table_Silva.biom'], - 'target_subfragment': ['V4'], 'algorithm': ( - 'Pick closed-reference OTUs, QIIMEv1.9.1 | barcode_type 8, ' - 'defaults'), 'artifact_id': 6, 'data_type': '16S', - 'timestamp': '2012-10-02 17:30:00', 'parameters': { - 'reference': 2, 'similarity': 0.97, 'sortmerna_e_value': 1, + 'target_subfragment': ['V4'], + 'algorithm': 'Pick closed-reference OTUs, QIIMEv1.9.1 | Defaults', + 'artifact_id': 6, 'data_type': '16S', + 'timestamp': '2012-10-02 17:30:00', 'prep_samples': 27, + 'parameters': { + 'reference': 2, 'similarity': 0.97, u'sortmerna_e_value': 1, 'sortmerna_max_pos': 10000, 'input_data': 2, 'threads': 1, 'sortmerna_coverage': 0.97}, 'name': 'BIOM'}, {'files': ['1_study_1001_closed_reference_otu_table.biom'], - 'target_subfragment': ['V4'], 'algorithm': ( - 'Pick closed-reference OTUs, QIIMEv1.9.1 | barcode_type 8, ' - 'defaults'), 'artifact_id': 5, 'data_type': '18S', - 'timestamp': '2012-10-02 17:30:00', 'parameters': { - 'reference': 1, 'similarity': 0.97, 'sortmerna_e_value': 1, - 'sortmerna_max_pos': 10000, 'input_data': 2, 'threads': 1, - 'sortmerna_coverage': 0.97}, 'name': 'BIOM'}, + 'target_subfragment': ['V4'], + 'algorithm': 'Pick closed-reference OTUs, QIIMEv1.9.1 | Defaults', + 'artifact_id': 5, 'data_type': '18S', + 'timestamp': '2012-10-02 17:30:00', 'prep_samples': 27, + 'parameters': { + 'reference': 1, 'similarity': 0.97, 'sortmerna_e_value': 1, + 'sortmerna_max_pos': 10000, 'input_data': 2, 'threads': 1, + 'sortmerna_coverage': 0.97}, 'name': 'BIOM'}, {'files': [], 'target_subfragment': ['V4'], 'algorithm': '', 'artifact_id': 7, 'data_type': '16S', - 'timestamp': '2012-10-02 17:30:00', 'parameters': {}, - 'name': 'BIOM'}] + 'timestamp': '2012-10-02 17:30:00', 'prep_samples': 27, + 'parameters': {}, 'name': 'BIOM'}] exp = {'status': 'success', 'msg': '', 'data': data} self.assertEqual(obs, exp) diff --git a/qiita_pet/templates/analysis_selected.html b/qiita_pet/templates/analysis_selected.html index 74ff6df01..b5c04206d 100644 --- a/qiita_pet/templates/analysis_selected.html +++ b/qiita_pet/templates/analysis_selected.html @@ -96,7 +96,7 @@

{

Processed Data

- + {% for pid, samples in viewitems(proc_datas) %} diff --git a/qiita_pet/templates/list_studies.html b/qiita_pet/templates/list_studies.html index 9133ce710..6154277e4 100644 --- a/qiita_pet/templates/list_studies.html +++ b/qiita_pet/templates/list_studies.html @@ -90,6 +90,7 @@ proc_data_table += ''; proc_data_table += ''; proc_data_table += ''; + proc_data_table += ''; proc_data_table += ''; proc_data_table += ''; @@ -106,6 +107,7 @@ params += '' + key + ': ' + info.parameters[key] + '
'; } proc_data_table += ''; + proc_data_table += ''; proc_data_table += ''; proc_data_table += ''; From 4bf4e97c75cf840bbddf47a7dd69b3d4f49144f3 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Sun, 20 Aug 2017 10:22:46 -0600 Subject: [PATCH 2/7] fix error --- qiita_db/test/test_util.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/qiita_db/test/test_util.py b/qiita_db/test/test_util.py index 6dba99203..9fbe35b0f 100644 --- a/qiita_db/test/test_util.py +++ b/qiita_db/test/test_util.py @@ -852,15 +852,15 @@ def test_get_artifacts_information(self): exp = [ {'files': ['1_study_1001_closed_reference_otu_table.biom'], - 'target_subfragment': ['V4'], + 'target_subfragment': ['V4'], 'artifact_id': 4, 'algorithm': 'Pick closed-reference OTUs, QIIMEv1.9.1 | Defaults', - 'artifact_id': 4, 'data_type': '18S', 'prep_samples': 27, + 'data_type': '18S', 'prep_samples': 27, 'parameters': { 'reference': 1, 'similarity': 0.97, 'sortmerna_e_value': 1, 'sortmerna_max_pos': 10000, 'input_data': 2, 'threads': 1, 'sortmerna_coverage': 0.97}, 'name': 'BIOM'}, {'files': [], 'target_subfragment': ['V4'], 'algorithm': '', - 'artifact_id': 7L, 'data_type': '16S', 'prep_samples': 27, + 'artifact_id': 7, 'data_type': '16S', 'prep_samples': 27, 'parameters': {}, 'name': 'BIOM'}, {'files': ['biom_table.biom'], 'target_subfragment': [], 'algorithm': '', 'artifact_id': 8, 'data_type': '18S', From a5836b1d26f1074f6a2d9c7f8067ffdb2399af0e Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Sun, 20 Aug 2017 23:03:56 -0600 Subject: [PATCH 3/7] fixing test --- qiita_db/test/test_util.py | 2 +- .../handlers/api_proxy/tests/test_artifact.py | 5 ++++- .../study_handlers/tests/test_artifact.py | 21 ++++++++++++------- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/qiita_db/test/test_util.py b/qiita_db/test/test_util.py index 9fbe35b0f..fa0f5a207 100644 --- a/qiita_db/test/test_util.py +++ b/qiita_db/test/test_util.py @@ -865,7 +865,7 @@ def test_get_artifacts_information(self): {'files': ['biom_table.biom'], 'target_subfragment': [], 'algorithm': '', 'artifact_id': 8, 'data_type': '18S', 'prep_samples': 0, 'parameters': {}, 'name': 'noname'}] - self.assertEqual(obs, exp) + self.assertItemsEqual(obs, exp) if __name__ == '__main__': diff --git a/qiita_pet/handlers/api_proxy/tests/test_artifact.py b/qiita_pet/handlers/api_proxy/tests/test_artifact.py index beafec4f3..a1004befc 100644 --- a/qiita_pet/handlers/api_proxy/tests/test_artifact.py +++ b/qiita_pet/handlers/api_proxy/tests/test_artifact.py @@ -245,7 +245,10 @@ def test_artifact_get_info(self): 'timestamp': '2012-10-02 17:30:00', 'prep_samples': 27, 'parameters': {}, 'name': 'BIOM'}] exp = {'status': 'success', 'msg': '', 'data': data} - self.assertEqual(obs, exp) + self.assertItemsEqual(obs.keys(), exp.keys()) + self.assertEqual(obs['status'], exp['status']) + self.assertEqual(obs['msg'], exp['msg']) + self.assertItemsEqual(obs['data'], exp['data']) def test_artifact_post_req(self): # Create new prep template to attach artifact to diff --git a/qiita_pet/handlers/study_handlers/tests/test_artifact.py b/qiita_pet/handlers/study_handlers/tests/test_artifact.py index 7cc8339fd..02fb60dad 100644 --- a/qiita_pet/handlers/study_handlers/tests/test_artifact.py +++ b/qiita_pet/handlers/study_handlers/tests/test_artifact.py @@ -164,19 +164,24 @@ def test_get(self): self.assertEqual(response.code, 200) data = [ {'files': ['1_study_1001_closed_reference_otu_table_Silva.biom'], - 'target_subfragment': ['V4'], 'algorithm': ( - 'Pick closed-reference OTUs, QIIMEv1.9.1 | barcode_type 8, ' - 'defaults'), 'artifact_id': 6, 'data_type': '16S', - 'timestamp': '2012-10-02 17:30:00', 'parameters': { + 'target_subfragment': ['V4'], 'artifact_id': 6, + 'data_type': '16S', 'timestamp': '2012-10-02 17:30:00', + 'prep_samples': 27, + 'algorithm': 'Pick closed-reference OTUs, QIIMEv1.9.1 | Defaults', + 'parameters': { 'reference': 2, 'similarity': 0.97, 'sortmerna_e_value': 1, 'sortmerna_max_pos': 10000, 'input_data': 2, 'threads': 1, 'sortmerna_coverage': 0.97}, 'name': 'BIOM'}, - {'files': [], 'target_subfragment': ['V4'], 'algorithm': '', - 'artifact_id': 7, 'data_type': '16S', - 'timestamp': '2012-10-02 17:30:00', 'parameters': {}, + {'files': [], 'target_subfragment': ['V4'], 'artifact_id': 7, + 'data_type': '16S', 'timestamp': '2012-10-02 17:30:00', + 'prep_samples': 27, 'algorithm': '', 'parameters': {}, 'name': 'BIOM'}] exp = {'status': 'success', 'msg': '', 'data': data} - self.assertEqual(loads(response.body), exp) + obs = loads(response.body) + self.assertItemsEqual(obs.keys(), exp.keys()) + self.assertEqual(obs['status'], exp['status']) + self.assertEqual(obs['msg'], exp['msg']) + self.assertItemsEqual(obs['data'], exp['data']) class ArtifactAdminAJAXTestsReadOnly(TestHandlerBase): From c9257563c587c14b9a4f3e82b3ddcbc0eb55f1a7 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Mon, 21 Aug 2017 08:10:36 -0600 Subject: [PATCH 4/7] fix errors --- qiita_db/test/test_util.py | 3 ++- qiita_pet/handlers/api_proxy/tests/test_artifact.py | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/qiita_db/test/test_util.py b/qiita_db/test/test_util.py index fa0f5a207..ac0fde1eb 100644 --- a/qiita_db/test/test_util.py +++ b/qiita_db/test/test_util.py @@ -853,7 +853,8 @@ def test_get_artifacts_information(self): exp = [ {'files': ['1_study_1001_closed_reference_otu_table.biom'], 'target_subfragment': ['V4'], 'artifact_id': 4, - 'algorithm': 'Pick closed-reference OTUs, QIIMEv1.9.1 | Defaults', + 'algorithm': ('Pick closed-reference OTUs, QIIMEv1.9.1 |' + 'barcode_type 8, defaults'), 'data_type': '18S', 'prep_samples': 27, 'parameters': { 'reference': 1, 'similarity': 0.97, 'sortmerna_e_value': 1, diff --git a/qiita_pet/handlers/api_proxy/tests/test_artifact.py b/qiita_pet/handlers/api_proxy/tests/test_artifact.py index a1004befc..ec5d6d9a2 100644 --- a/qiita_pet/handlers/api_proxy/tests/test_artifact.py +++ b/qiita_pet/handlers/api_proxy/tests/test_artifact.py @@ -224,7 +224,8 @@ def test_artifact_get_info(self): data = [ {'files': ['1_study_1001_closed_reference_otu_table_Silva.biom'], 'target_subfragment': ['V4'], - 'algorithm': 'Pick closed-reference OTUs, QIIMEv1.9.1 | Defaults', + 'algorithm': ('Pick closed-reference OTUs, QIIMEv1.9.1 | ' + 'barcode_type 8, defaults'), 'artifact_id': 6, 'data_type': '16S', 'timestamp': '2012-10-02 17:30:00', 'prep_samples': 27, 'parameters': { @@ -233,7 +234,8 @@ def test_artifact_get_info(self): 'sortmerna_coverage': 0.97}, 'name': 'BIOM'}, {'files': ['1_study_1001_closed_reference_otu_table.biom'], 'target_subfragment': ['V4'], - 'algorithm': 'Pick closed-reference OTUs, QIIMEv1.9.1 | Defaults', + 'algorithm': ('Pick closed-reference OTUs, QIIMEv1.9.1 | ' + 'barcode_type 8, defaults'), 'artifact_id': 5, 'data_type': '18S', 'timestamp': '2012-10-02 17:30:00', 'prep_samples': 27, 'parameters': { From 63ccfd92e5f4381f6fc98c47a8606cffc169468b Mon Sep 17 00:00:00 2001 From: Jose Navas Date: Mon, 21 Aug 2017 10:59:24 -0700 Subject: [PATCH 5/7] Fixing test --- qiita_db/test/test_util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiita_db/test/test_util.py b/qiita_db/test/test_util.py index ac0fde1eb..65ad99020 100644 --- a/qiita_db/test/test_util.py +++ b/qiita_db/test/test_util.py @@ -854,7 +854,7 @@ def test_get_artifacts_information(self): {'files': ['1_study_1001_closed_reference_otu_table.biom'], 'target_subfragment': ['V4'], 'artifact_id': 4, 'algorithm': ('Pick closed-reference OTUs, QIIMEv1.9.1 |' - 'barcode_type 8, defaults'), + ' Defaults'), 'data_type': '18S', 'prep_samples': 27, 'parameters': { 'reference': 1, 'similarity': 0.97, 'sortmerna_e_value': 1, From eae20ccb4d22aa4d055e6c93af4a38d2e7c03991 Mon Sep 17 00:00:00 2001 From: Jose Navas Date: Mon, 21 Aug 2017 11:32:50 -0700 Subject: [PATCH 6/7] DEBUG: adding prints to see the actual error --- qiita_db/test/test_util.py | 12 ++++++++++++ .../study_handlers/tests/test_artifact.py | 19 ++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/qiita_db/test/test_util.py b/qiita_db/test/test_util.py index 65ad99020..59d8109ff 100644 --- a/qiita_db/test/test_util.py +++ b/qiita_db/test/test_util.py @@ -866,6 +866,18 @@ def test_get_artifacts_information(self): {'files': ['biom_table.biom'], 'target_subfragment': [], 'algorithm': '', 'artifact_id': 8, 'data_type': '18S', 'prep_samples': 0, 'parameters': {}, 'name': 'noname'}] + print len(obs), len(exp) + for o, e in zip(obs, exp): + if o != e: + print o + print e + print "---------------" + for k in o: + if o[k] != e[k]: + print k + print o[k] + print e[k] + print "===============" self.assertItemsEqual(obs, exp) diff --git a/qiita_pet/handlers/study_handlers/tests/test_artifact.py b/qiita_pet/handlers/study_handlers/tests/test_artifact.py index 02fb60dad..a1c477c43 100644 --- a/qiita_pet/handlers/study_handlers/tests/test_artifact.py +++ b/qiita_pet/handlers/study_handlers/tests/test_artifact.py @@ -181,7 +181,24 @@ def test_get(self): self.assertItemsEqual(obs.keys(), exp.keys()) self.assertEqual(obs['status'], exp['status']) self.assertEqual(obs['msg'], exp['msg']) - self.assertItemsEqual(obs['data'], exp['data']) + + obs = obs['data'] + exp = exp['data'] + print len(obs), len(exp) + for o, e in zip(obs, exp): + if o != e: + print o + print e + print "---------------" + for k in o: + if o[k] != e[k]: + print k + print o[k] + print e[k] + print "===============" + + # self.assertItemsEqual(obs['data'], exp['data']) + self.assertItemsEqual(obs, exp) class ArtifactAdminAJAXTestsReadOnly(TestHandlerBase): From b7e2cc9067c5166c6f9b31597b33c7ed00e506e2 Mon Sep 17 00:00:00 2001 From: Jose Navas Date: Mon, 21 Aug 2017 11:53:02 -0700 Subject: [PATCH 7/7] Fixing test and remove debug code --- qiita_db/test/test_util.py | 14 +----------- .../study_handlers/tests/test_artifact.py | 22 +++---------------- 2 files changed, 4 insertions(+), 32 deletions(-) diff --git a/qiita_db/test/test_util.py b/qiita_db/test/test_util.py index 59d8109ff..b223bdee4 100644 --- a/qiita_db/test/test_util.py +++ b/qiita_db/test/test_util.py @@ -854,7 +854,7 @@ def test_get_artifacts_information(self): {'files': ['1_study_1001_closed_reference_otu_table.biom'], 'target_subfragment': ['V4'], 'artifact_id': 4, 'algorithm': ('Pick closed-reference OTUs, QIIMEv1.9.1 |' - ' Defaults'), + ' barcode_type 8, defaults'), 'data_type': '18S', 'prep_samples': 27, 'parameters': { 'reference': 1, 'similarity': 0.97, 'sortmerna_e_value': 1, @@ -866,18 +866,6 @@ def test_get_artifacts_information(self): {'files': ['biom_table.biom'], 'target_subfragment': [], 'algorithm': '', 'artifact_id': 8, 'data_type': '18S', 'prep_samples': 0, 'parameters': {}, 'name': 'noname'}] - print len(obs), len(exp) - for o, e in zip(obs, exp): - if o != e: - print o - print e - print "---------------" - for k in o: - if o[k] != e[k]: - print k - print o[k] - print e[k] - print "===============" self.assertItemsEqual(obs, exp) diff --git a/qiita_pet/handlers/study_handlers/tests/test_artifact.py b/qiita_pet/handlers/study_handlers/tests/test_artifact.py index a1c477c43..3b1bd1b2a 100644 --- a/qiita_pet/handlers/study_handlers/tests/test_artifact.py +++ b/qiita_pet/handlers/study_handlers/tests/test_artifact.py @@ -167,7 +167,8 @@ def test_get(self): 'target_subfragment': ['V4'], 'artifact_id': 6, 'data_type': '16S', 'timestamp': '2012-10-02 17:30:00', 'prep_samples': 27, - 'algorithm': 'Pick closed-reference OTUs, QIIMEv1.9.1 | Defaults', + 'algorithm': 'Pick closed-reference OTUs, QIIMEv1.9.1 | ' + 'barcode_type 8, defaults', 'parameters': { 'reference': 2, 'similarity': 0.97, 'sortmerna_e_value': 1, 'sortmerna_max_pos': 10000, 'input_data': 2, 'threads': 1, @@ -181,24 +182,7 @@ def test_get(self): self.assertItemsEqual(obs.keys(), exp.keys()) self.assertEqual(obs['status'], exp['status']) self.assertEqual(obs['msg'], exp['msg']) - - obs = obs['data'] - exp = exp['data'] - print len(obs), len(exp) - for o, e in zip(obs, exp): - if o != e: - print o - print e - print "---------------" - for k in o: - if o[k] != e[k]: - print k - print o[k] - print e[k] - print "===============" - - # self.assertItemsEqual(obs['data'], exp['data']) - self.assertItemsEqual(obs, exp) + self.assertItemsEqual(obs['data'], exp['data']) class ArtifactAdminAJAXTestsReadOnly(TestHandlerBase):
idDatatypeProcessed DateAlgorithmParametersSamplesidDatatypeProcessed DateAlgorithmParametersSamples selected from Prep Info
Data typeProcessing methodParametersSamples in Prep InfoFiles
' + params + '' + info.prep_samples + '' + info.files.join('
') + '