Skip to content

Commit 12f48f9

Browse files
committed
Merge pull request #1046 from josenavas/solve-stochastic-failure
Solve stochastic failure
2 parents e1bcc2d + 6270a6d commit 12f48f9

File tree

3 files changed

+68
-65
lines changed

3 files changed

+68
-65
lines changed

qiita_db/metadata_template/base_metadata_template.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ def _add_common_creation_steps_to_queue(cls, md_template, obj_id,
542542
headers = list(md_template.keys())
543543

544544
# Get the required columns from the DB
545-
db_cols = get_table_cols(cls._table, conn_handler)
545+
db_cols = sorted(get_table_cols(cls._table, conn_handler))
546546
# Remove the sample_id and _id_column columns
547547
db_cols.remove('sample_id')
548548
db_cols.remove(cls._id_column)
@@ -561,7 +561,7 @@ def _add_common_creation_steps_to_queue(cls, md_template, obj_id,
561561
values, many=True)
562562

563563
# Insert rows on *_columns table
564-
headers = list(set(headers).difference(db_cols))
564+
headers = sorted(set(headers).difference(db_cols))
565565
datatypes = get_datatypes(md_template.ix[:, headers])
566566
# psycopg2 requires a list of tuples, in which each tuple is a set
567567
# of values to use in the string formatting of the query. We have all

qiita_db/metadata_template/test/test_prep_template.py

Lines changed: 56 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -582,39 +582,40 @@ def test_add_common_creation_steps_to_queue(self):
582582
'VALUES (%s, %s, %s)')
583583

584584
sql_create_table = (
585-
'CREATE TABLE qiita.prep_2 '
586-
'(sample_id varchar NOT NULL, str_column varchar, '
587-
'run_prefix varchar, barcodesequence varchar, platform varchar, '
588-
'linkerprimersequence varchar, '
589-
'experiment_design_description varchar, '
590-
'library_construction_protocol varchar)')
585+
'CREATE TABLE qiita.prep_2 (sample_id varchar NOT NULL, '
586+
'barcodesequence varchar, experiment_design_description varchar, '
587+
'library_construction_protocol varchar, '
588+
'linkerprimersequence varchar, platform varchar, '
589+
'run_prefix varchar, str_column varchar)')
591590

592591
sql_insert_dynamic = (
593592
'INSERT INTO qiita.prep_2 '
594-
'(sample_id, str_column, run_prefix, barcodesequence, platform, '
595-
'linkerprimersequence, experiment_design_description, '
596-
'library_construction_protocol) '
593+
'(sample_id, barcodesequence, experiment_design_description, '
594+
'library_construction_protocol, linkerprimersequence, platform, '
595+
'run_prefix, str_column) '
597596
'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)')
598597

599598
sql_insert_dynamic_params_1 = (
600-
'2.SKB8.640193', 'Value for sample 1', 's_G1_L001_sequences',
601-
'GTCCGCAAGTTA', 'ILLUMINA', 'GTGCCAGCMGCCGCGGTAA', 'BBBB', 'AAAA')
599+
'2.SKB8.640193', 'GTCCGCAAGTTA', 'BBBB', 'AAAA',
600+
'GTGCCAGCMGCCGCGGTAA', 'ILLUMINA', 's_G1_L001_sequences',
601+
'Value for sample 1')
602602
sql_insert_dynamic_params_2 = (
603-
'2.SKD8.640184', 'Value for sample 2', 's_G1_L001_sequences',
604-
'CGTAGAGCTCTC', 'ILLUMINA', 'GTGCCAGCMGCCGCGGTAA', 'BBBB', 'AAAA')
603+
'2.SKD8.640184', 'CGTAGAGCTCTC', 'BBBB', 'AAAA',
604+
'GTGCCAGCMGCCGCGGTAA', 'ILLUMINA', 's_G1_L001_sequences',
605+
'Value for sample 2')
605606

606607
exp = [
607608
(sql_insert_common, sql_insert_common_params_1),
608609
(sql_insert_common, sql_insert_common_params_2),
609-
(sql_insert_prep_columns, (2, 'str_column', 'varchar')),
610-
(sql_insert_prep_columns, (2, 'run_prefix', 'varchar')),
611610
(sql_insert_prep_columns, (2, 'barcodesequence', 'varchar')),
612-
(sql_insert_prep_columns, (2, 'platform', 'varchar')),
613-
(sql_insert_prep_columns, (2, 'linkerprimersequence', 'varchar')),
614611
(sql_insert_prep_columns,
615612
(2, 'experiment_design_description', 'varchar')),
616613
(sql_insert_prep_columns,
617614
(2, 'library_construction_protocol', 'varchar')),
615+
(sql_insert_prep_columns, (2, 'linkerprimersequence', 'varchar')),
616+
(sql_insert_prep_columns, (2, 'platform', 'varchar')),
617+
(sql_insert_prep_columns, (2, 'run_prefix', 'varchar')),
618+
(sql_insert_prep_columns, (2, 'str_column', 'varchar')),
618619
(sql_create_table, None),
619620
(sql_insert_dynamic, sql_insert_dynamic_params_1),
620621
(sql_insert_dynamic, sql_insert_dynamic_params_2)]
@@ -794,17 +795,20 @@ def test_create(self):
794795
# The new table hosts the correct values
795796
obs = self.conn_handler.execute_fetchall(
796797
"SELECT * FROM qiita.prep_2")
797-
# sample_id, study_id, str_column, ebi_submission_accession,
798-
# run_prefix, barcodesequence, linkerprimersequence
799-
exp = [['1.SKB7.640196', 'Value for sample 3', 'ILLUMINA',
800-
's_G1_L002_sequences', 'CCTCTGAGAGCT', None,
801-
'GTGCCAGCMGCCGCGGTAA', 'BBBB', 'AAAA'],
802-
['1.SKB8.640193', 'Value for sample 1', 'ILLUMINA',
803-
's_G1_L001_sequences', 'GTCCGCAAGTTA', None,
804-
'GTGCCAGCMGCCGCGGTAA', 'BBBB', 'AAAA'],
805-
['1.SKD8.640184', 'Value for sample 2', 'ILLUMINA',
806-
's_G1_L001_sequences', 'CGTAGAGCTCTC', None,
807-
'GTGCCAGCMGCCGCGGTAA', 'BBBB', 'AAAA']]
798+
799+
# barcodesequence, ebi_submission_accession,
800+
# experiment_design_description, library_construction_protocol,
801+
# linkerprimersequence, platform, run_prefix, str_column
802+
exp = [['1.SKB7.640196', 'CCTCTGAGAGCT', None, 'BBBB', 'AAAA',
803+
'GTGCCAGCMGCCGCGGTAA', 'ILLUMINA', 's_G1_L002_sequences',
804+
'Value for sample 3'],
805+
['1.SKB8.640193', 'GTCCGCAAGTTA', None, 'BBBB', 'AAAA',
806+
'GTGCCAGCMGCCGCGGTAA', 'ILLUMINA', 's_G1_L001_sequences',
807+
'Value for sample 1'],
808+
['1.SKD8.640184', 'CGTAGAGCTCTC', None, 'BBBB', 'AAAA',
809+
'GTGCCAGCMGCCGCGGTAA', 'ILLUMINA', 's_G1_L001_sequences',
810+
'Value for sample 2']]
811+
808812
self.assertEqual(sorted(obs), sorted(exp))
809813

810814
# prep and qiime files have been created
@@ -858,17 +862,18 @@ def test_create_already_prefixed_samples(self):
858862
# The new table hosts the correct values
859863
obs = self.conn_handler.execute_fetchall(
860864
"SELECT * FROM qiita.prep_2")
861-
# sample_id, study_id, str_column, ebi_submission_accession,
862-
# run_prefix, barcodesequence, linkerprimersequence
863-
exp = [['1.SKB7.640196', 'Value for sample 3', 'ILLUMINA',
864-
's_G1_L002_sequences', 'CCTCTGAGAGCT', None,
865-
'GTGCCAGCMGCCGCGGTAA', 'BBBB', 'AAAA'],
866-
['1.SKB8.640193', 'Value for sample 1', 'ILLUMINA',
867-
's_G1_L001_sequences', 'GTCCGCAAGTTA', None,
868-
'GTGCCAGCMGCCGCGGTAA', 'BBBB', 'AAAA'],
869-
['1.SKD8.640184', 'Value for sample 2', 'ILLUMINA',
870-
's_G1_L001_sequences', 'CGTAGAGCTCTC', None,
871-
'GTGCCAGCMGCCGCGGTAA', 'BBBB', 'AAAA']]
865+
# barcodesequence, ebi_submission_accession,
866+
# experiment_design_description, library_construction_protocol,
867+
# linkerprimersequence, platform, run_prefix, str_column
868+
exp = [['1.SKB7.640196', 'CCTCTGAGAGCT', None, 'BBBB', 'AAAA',
869+
'GTGCCAGCMGCCGCGGTAA', 'ILLUMINA', 's_G1_L002_sequences',
870+
'Value for sample 3'],
871+
['1.SKB8.640193', 'GTCCGCAAGTTA', None, 'BBBB', 'AAAA',
872+
'GTGCCAGCMGCCGCGGTAA', 'ILLUMINA', 's_G1_L001_sequences',
873+
'Value for sample 1'],
874+
['1.SKD8.640184', 'CGTAGAGCTCTC', None, 'BBBB', 'AAAA',
875+
'GTGCCAGCMGCCGCGGTAA', 'ILLUMINA', 's_G1_L001_sequences',
876+
'Value for sample 2']]
872877
self.assertEqual(sorted(obs), sorted(exp))
873878

874879
# prep and qiime files have been created
@@ -959,17 +964,18 @@ def test_create_data_type_id(self):
959964
# The new table hosts the correct values
960965
obs = self.conn_handler.execute_fetchall(
961966
"SELECT * FROM qiita.prep_2")
962-
# sample_id, str_column, ebi_submission_accession,
963-
# run_prefix, barcodesequence, linkerprimersequence
964-
exp = [['1.SKB7.640196', 'Value for sample 3', 'ILLUMINA',
965-
's_G1_L002_sequences', 'CCTCTGAGAGCT', None,
966-
'GTGCCAGCMGCCGCGGTAA', 'BBBB', 'AAAA'],
967-
['1.SKB8.640193', 'Value for sample 1', 'ILLUMINA',
968-
's_G1_L001_sequences', 'GTCCGCAAGTTA', None,
969-
'GTGCCAGCMGCCGCGGTAA', 'BBBB', 'AAAA'],
970-
['1.SKD8.640184', 'Value for sample 2', 'ILLUMINA',
971-
's_G1_L001_sequences', 'CGTAGAGCTCTC', None,
972-
'GTGCCAGCMGCCGCGGTAA', 'BBBB', 'AAAA']]
967+
# barcodesequence, ebi_submission_accession,
968+
# experiment_design_description, library_construction_protocol,
969+
# linkerprimersequence, platform, run_prefix, str_column
970+
exp = [['1.SKB7.640196', 'CCTCTGAGAGCT', None, 'BBBB', 'AAAA',
971+
'GTGCCAGCMGCCGCGGTAA', 'ILLUMINA', 's_G1_L002_sequences',
972+
'Value for sample 3'],
973+
['1.SKB8.640193', 'GTCCGCAAGTTA', None, 'BBBB', 'AAAA',
974+
'GTGCCAGCMGCCGCGGTAA', 'ILLUMINA', 's_G1_L001_sequences',
975+
'Value for sample 1'],
976+
['1.SKD8.640184', 'CGTAGAGCTCTC', None, 'BBBB', 'AAAA',
977+
'GTGCCAGCMGCCGCGGTAA', 'ILLUMINA', 's_G1_L001_sequences',
978+
'Value for sample 2']]
973979
self.assertEqual(sorted(obs), sorted(exp))
974980

975981
def test_create_error(self):

qiita_db/metadata_template/test/test_sample_template.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -802,23 +802,20 @@ def test_add_common_creation_steps_to_queue(self):
802802

803803
sql_insert_required = (
804804
'INSERT INTO qiita.required_sample_info '
805-
'(study_id, sample_id, physical_location, has_physical_specimen, '
806-
'has_extracted_data, sample_type, required_sample_info_status_id, '
807-
'collection_timestamp, host_subject_id, description, latitude, '
808-
'longitude) '
805+
'(study_id, sample_id, collection_timestamp, description, '
806+
'has_extracted_data, has_physical_specimen, host_subject_id, '
807+
'latitude, longitude, physical_location, '
808+
'required_sample_info_status_id, sample_type) '
809809
'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)')
810810
sql_insert_required_params_1 = (
811-
2, '2.Sample1', 'location1', True, True, 'type1', 1,
812-
datetime(2014, 5, 29, 12, 24, 51), 'NotIdentified',
813-
'Test Sample 1', 42.42, 41.41)
811+
2, '2.Sample1', datetime(2014, 5, 29, 12, 24, 51), 'Test Sample 1',
812+
True, True, 'NotIdentified', 42.42, 41.41, 'location1', 1, 'type1')
814813
sql_insert_required_params_2 = (
815-
2, '2.Sample2', 'location1', True, True, 'type1', 1,
816-
datetime(2014, 5, 29, 12, 24, 51), 'NotIdentified',
817-
'Test Sample 2', 4.2, 1.1)
814+
2, '2.Sample2', datetime(2014, 5, 29, 12, 24, 51), 'Test Sample 2',
815+
True, True, 'NotIdentified', 4.2, 1.1, 'location1', 1, 'type1')
818816
sql_insert_required_params_3 = (
819-
2, '2.Sample3', 'location1', True, True, 'type1', 1,
820-
datetime(2014, 5, 29, 12, 24, 51), 'NotIdentified',
821-
'Test Sample 3', 4.8, 4.41)
817+
2, '2.Sample3', datetime(2014, 5, 29, 12, 24, 51), 'Test Sample 3',
818+
True, True, 'NotIdentified', 4.8, 4.41, 'location1', 1, 'type1')
822819

823820
sql_insert_sample_cols = (
824821
'INSERT INTO qiita.study_sample_columns '

0 commit comments

Comments
 (0)