def test_measurement_with_strain_size_1(self): measurement_intent = MeasurementIntent() measurement_intent.set_measurement_type( ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE) measurement_intent.add_file_type('SPREADSHEET') strain_name = NamedLink('and_00', link='www.synbiohub.org/example/strain') strain = StrainIntent(strain_name) strain.set_strain_lab_name('my_lab') strain.set_strain_common_name('my_strain') measurement_intent.add_strain(strain) strain_structure_request = { dc_constants.SBH_URI: 'www.synbiohub.org/example/strain', dc_constants.LABEL: 'my_strain', dc_constants.LAB_ID: 'name.my_lab.and_00' } self.assertEqual( { dc_constants.MEASUREMENT_TYPE: ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE, dc_constants.FILE_TYPE: ['SPREADSHEET'], dc_constants.STRAINS: [strain_structure_request] }, measurement_intent.to_structured_request())
def test_measurement_with_neg_control_content_size_1(self): measurement_intent = MeasurementIntent() measurement_intent.set_measurement_type( ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE) measurement_intent.add_file_type('SPREADSHEET') content = ContentIntent() num_neg_control = NamedIntegerValue( NamedLink(ip_constants.HEADER_NUMBER_OF_NEGATIVE_CONTROLS_VALUE), 2) content.set_numbers_of_negative_controls([num_neg_control]) measurement_intent.add_content(content) content_structure_request = [{ dc_constants.NAME: { dc_constants.LABEL: ip_constants.HEADER_NUMBER_OF_NEGATIVE_CONTROLS_VALUE, dc_constants.SBH_URI: dc_constants.NO_PROGRAM_DICTIONARY }, dc_constants.VALUE: 2 }] self.assertDictEqual( { dc_constants.CONTENTS: [content_structure_request], dc_constants.FILE_TYPE: ['SPREADSHEET'], dc_constants.MEASUREMENT_TYPE: ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE }, measurement_intent.to_structured_request())
def test_measurement_with_ods_size_1(self): measurement_intent = MeasurementIntent() measurement_intent.set_measurement_type( ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE) measurement_intent.add_file_type('SPREADSHEET') measurement_intent.add_optical_density(3.0) self.assertEqual( { dc_constants.MEASUREMENT_TYPE: ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE, dc_constants.FILE_TYPE: ['SPREADSHEET'], dc_constants.ODS: [3.0] }, measurement_intent.to_structured_request())
def test_measurement_with_replicate_size_1(self): measurement_intent = MeasurementIntent() measurement_intent.set_measurement_type( ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE) measurement_intent.add_file_type('SPREADSHEET') measurement_intent.add_replicate(5) self.assertEqual( { dc_constants.MEASUREMENT_TYPE: ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE, dc_constants.FILE_TYPE: ['SPREADSHEET'], dc_constants.REPLICATES: [5] }, measurement_intent.to_structured_request())
def test_measurement_with_control_type(self): measurement_intent = MeasurementIntent() measurement_intent.set_measurement_type( ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE) measurement_intent.add_file_type('SPREADSHEET') control = ControlIntent() control.set_control_type('HIGH_FITC') measurement_intent.add_control(control) control_structure_request = {dc_constants.TYPE: 'HIGH_FITC'} self.assertEqual( { dc_constants.MEASUREMENT_TYPE: ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE, dc_constants.FILE_TYPE: ['SPREADSHEET'], dc_constants.CONTROLS: [control_structure_request] }, measurement_intent.to_structured_request())
def test_measurement_with_file_type_and_measurement_type(self): measurement_intent = MeasurementIntent() measurement_intent.set_measurement_type( ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE) measurement_intent.add_file_type('SPREADSHEET') self.assertEqual( { dc_constants.MEASUREMENT_TYPE: ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE, dc_constants.FILE_TYPE: ['SPREADSHEET'] }, measurement_intent.to_structured_request())
def test_measurement_with_temperature_size_1(self): measurement_intent = MeasurementIntent() measurement_intent.set_measurement_type( ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE) measurement_intent.add_file_type('SPREADSHEET') temperature = TemperatureIntent(75.0, 'fahrenheit') measurement_intent.add_temperature(temperature) temperature_structure_request = { dc_constants.VALUE: 75.0, dc_constants.UNIT: 'fahrenheit' } self.assertEqual( { dc_constants.MEASUREMENT_TYPE: ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE, dc_constants.FILE_TYPE: ['SPREADSHEET'], dc_constants.TEMPERATURES: [temperature_structure_request] }, measurement_intent.to_structured_request())
def test_measurement_with_timepoint_size_1(self): measurement_intent = MeasurementIntent() measurement_intent.set_measurement_type( ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE) measurement_intent.add_file_type('SPREADSHEET') timepoint = TimepointIntent(12.0, 'hour') measurement_intent.add_timepoint(timepoint) timepoint_structure_request = { dc_constants.VALUE: 12.0, dc_constants.UNIT: 'hour' } self.assertEqual( { dc_constants.MEASUREMENT_TYPE: ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE, dc_constants.FILE_TYPE: ['SPREADSHEET'], dc_constants.TIMEPOINTS: [timepoint_structure_request] }, measurement_intent.to_structured_request())
def _process_protocol_measurement_type(self, measurement_types): for opil_measurement_type in measurement_types: measurement_intent = MeasurementIntent() if opil_measurement_type.type == ip_constants.NCIT_FLOW_URI: measurement_intent.set_measurement_type(ip_constants.MEASUREMENT_TYPE_FLOW) elif opil_measurement_type.type == ip_constants.NCIT_RNA_SEQ_URI: measurement_intent.set_measurement_type(ip_constants.MEASUREMENT_TYPE_RNA_SEQ) elif opil_measurement_type.type == ip_constants.NCIT_DNA_SEQ_URI: measurement_intent.set_measurement_type(ip_constants.MEASUREMENT_TYPE_DNA_SEQ) elif opil_measurement_type.type == ip_constants.NCIT_PROTEOMICS_URI: measurement_intent.set_measurement_type(ip_constants.MEASUREMENT_TYPE_PROTEOMICS) elif opil_measurement_type.type == ip_constants.NCIT_SEQUENCING_CHROMATOGRAM_URI: measurement_intent.set_measurement_type(ip_constants.MEASUREMENT_TYPE_SEQUENCING_CHROMATOGRAM) elif opil_measurement_type.type == ip_constants.SD2_AUTOMATED_TEST_URI: measurement_intent.set_measurement_type(ip_constants.MEASUREMENT_TYPE_AUTOMATED_TEST) elif opil_measurement_type.type == ip_constants.NCIT_CFU_URI: measurement_intent.set_measurement_type(ip_constants.MEASUREMENT_TYPE_CFU) elif opil_measurement_type.type == ip_constants.NCIT_PLATE_READER_URI: measurement_intent.set_measurement_type(ip_constants.MEASUREMENT_TYPE_PLATE_READER) elif opil_measurement_type.type == ip_constants.SD2_CONDITION_SPACE_URI: measurement_intent.set_measurement_type(ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE) elif opil_measurement_type.type == ip_constants.SD2_EXPERIMENTAL_DESIGN_URI: measurement_intent.set_measurement_type(ip_constants.MEASUREMENT_TYPE_EXPERIMENTAL_DESIGN) elif opil_measurement_type.type == ip_constants.NCIT_FLUORESCENCE_MICROSCOPY: measurement_intent.set_measurement_type(ip_constants.MEASUREMENT_TYPE_FLUOESCENE_MICROSCOPY) else: message = 'Measurement-type %s not supported in Intent parser' % opil_measurement_type.type self.validation_errors.append(message) continue self._measurement_intents.append(measurement_intent)
def _process_row(self, row_index, control_data): row = self._intent_parser_table.get_row(row_index) measurement = MeasurementIntent() content_intent = ContentIntent() row_offset = row_index # Used for reporting row value to users for cell_index in range(len(row)): cell = self._intent_parser_table.get_cell(row_index, cell_index) # Cell type based on column header header_cell = self._intent_parser_table.get_cell( self._intent_parser_table.header_row_index(), cell_index) cell_type = cell_parser.PARSER.get_header_type( header_cell.get_text()) column_offset = cell_index # Used for reporting column value to users if not cell.get_text().strip() or cell_type in self.IGNORE_COLUMNS: continue if ip_constants.HEADER_MEASUREMENT_TYPE_TYPE == cell_type: self._process_measurement_type(cell, measurement, row_offset, column_offset) elif ip_constants.HEADER_FILE_TYPE_TYPE == cell_type: self._process_file_type(cell, measurement, row_offset, column_offset) elif ip_constants.HEADER_REPLICATE_TYPE == cell_type: self._process_replicate(cell, measurement, row_offset, column_offset) elif ip_constants.HEADER_STRAINS_TYPE == cell_type: self._process_strains(cell, measurement, row_offset, column_offset) elif ip_constants.HEADER_ODS_TYPE == cell_type: self._process_ods(cell, measurement, row_offset, column_offset) elif ip_constants.HEADER_TEMPERATURE_TYPE == cell_type: self._process_temperature(cell, measurement, row_offset, column_offset) elif ip_constants.HEADER_TIMEPOINT_TYPE == cell_type: self._process_timepoints(cell, measurement, row_offset, column_offset) elif ip_constants.HEADER_BATCH_TYPE == cell_type: self._process_batch(cell, measurement, row_offset, column_offset) elif ip_constants.HEADER_CONTROL_TYPE == cell_type: self._process_control(cell, control_data, measurement) elif ip_constants.HEADER_NUM_NEG_CONTROL_TYPE == cell_type: num_neg_controls = self._process_num_neg_controls( cell, row_offset, column_offset) if num_neg_controls: content_intent.set_numbers_of_negative_controls( num_neg_controls) elif ip_constants.HEADER_RNA_INHIBITOR_REACTION_TYPE == cell_type: rna_inhibitor_reactions = self._process_rna_inhibitor_reaction( cell, row_offset, column_offset) if rna_inhibitor_reactions: content_intent.set_rna_inhibitor_reaction_flags( rna_inhibitor_reactions) elif ip_constants.HEADER_DNA_REACTION_CONCENTRATION_TYPE == cell_type: dna_reaction_concentrations = self._process_dna_reaction_concentration( cell, row_offset, column_offset) if dna_reaction_concentrations: content_intent.set_dna_reaction_concentrations( dna_reaction_concentrations) elif ip_constants.HEADER_TEMPLATE_DNA_TYPE == cell_type: dna_templates = self._process_template_dna( cell, row_offset, column_offset) if dna_templates: content_intent.set_template_dna_values(dna_templates) elif ip_constants.HEADER_COLUMN_ID_TYPE == cell_type: column_ids = self._process_col_id(cell, row_offset, column_offset) if column_ids: content_intent.set_column_ids(column_ids) elif ip_constants.HEADER_ROW_ID_TYPE == cell_type: row_ids = self._process_row_id(cell, row_offset, column_offset) if row_ids: content_intent.set_row_ids(row_ids) elif ip_constants.HEADER_MEASUREMENT_LAB_ID_TYPE == cell_type: lab_ids = self._process_lab_id(cell, row_offset, column_offset) if lab_ids: content_intent.set_lab_ids(lab_ids) else: reagents_and_medias = self._process_reagent_or_media( cell, header_cell, row_offset, column_offset) self._processed_reagents_and_medias.extend(reagents_and_medias) self._has_medias_and_reagents = True for reagent_or_media in reagents_and_medias: if isinstance(reagent_or_media, ReagentIntent): content_intent.add_reagent(reagent_or_media) elif isinstance(reagent_or_media, MediaIntent): content_intent.add_media(reagent_or_media) else: self._validation_errors.append( 'Expected to process reagent or media but got %s' % isinstance(reagent_or_media)) if not content_intent.is_empty(): measurement.add_content(content_intent) return measurement
def test_measurement_with_strain_size_2(self): measurement_intent = MeasurementIntent() measurement_intent.set_measurement_type( ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE) measurement_intent.add_file_type('SPREADSHEET') strain_value1 = NamedLink('and_00', link='www.synbiohub.org/example/and_strain') strain1 = StrainIntent(strain_value1) strain1.set_strain_lab_name('my_lab') strain1.set_strain_common_name('and_strain') measurement_intent.add_strain(strain1) strain_value2 = NamedLink('or_gate', link='www.synbiohub.org/example/or_strain') strain2 = StrainIntent(strain_value2) strain2.set_strain_lab_name('my_lab') strain2.set_strain_common_name('or_strain') measurement_intent.add_strain(strain2) strain_structure_request = [{ dc_constants.SBH_URI: 'www.synbiohub.org/example/and_strain', dc_constants.LABEL: 'and_strain', dc_constants.LAB_ID: 'name.my_lab.and_00' }, { dc_constants.SBH_URI: 'www.synbiohub.org/example/or_strain', dc_constants.LABEL: 'or_strain', dc_constants.LAB_ID: 'name.my_lab.or_gate' }] self.assertEqual( { dc_constants.MEASUREMENT_TYPE: ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE, dc_constants.FILE_TYPE: ['SPREADSHEET'], dc_constants.STRAINS: strain_structure_request }, measurement_intent.to_structured_request())
def test_measurement_with_missing_measurement_type(self): measurement_intent = MeasurementIntent() measurement_intent.add_file_type('SPREADSHEET') with self.assertRaises(IntentParserException): measurement_intent.to_structured_request()
def test_measurement_with_missing_file_type(self): measurement_intent = MeasurementIntent() measurement_intent.set_measurement_type( ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE) with self.assertRaises(IntentParserException): measurement_intent.to_structured_request()