Exemplo n.º 1
0
    def test_table_with_contents(self):
        ip_table = test_utils.create_fake_controls_table(1)
        control_type = IntentParserCell()
        control_type.add_paragraph('HIGH_FITC')

        content = IntentParserCell()
        content.add_paragraph(
            'beta_estradiol',
            link='https://hub.sd2e.org/user/sd2e/design/beta_estradiol/1')
        data_row = test_utils.create_control_table_row(
            contents_cell=content, control_type_cell=control_type)
        ip_table.add_row(data_row)

        control_table_parser = ControlsTable(ip_table,
                                             control_types={'HIGH_FITC'})
        control_table_parser.process_table()
        control_result = control_table_parser.get_intents()

        content = {
            dc_constants.NAME: {
                dc_constants.LABEL:
                'beta_estradiol',
                dc_constants.SBH_URI:
                'https://hub.sd2e.org/user/sd2e/design/beta_estradiol/1'
            }
        }

        expected_result = {
            dc_constants.TYPE: 'HIGH_FITC',
            dc_constants.CONTENTS: [content]
        }
        self.assertEqual(expected_result,
                         control_result[0].to_structured_request())
 def test_strains_with_mix_string_and_uri(self):
     input_table = {'tableRows': [
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'Strains\n' }}]}}]}]},
         {'tableCells': [{'content': [ 
             {'paragraph': {'elements': [{'textRun': {
             'content': 'MG1655','textStyle': {'link': {'url': 'https://hub.sd2e.org/user/sd2e/design/MG1655/1'}
                     }}}]}},
             {'paragraph': {'elements': [{'textRun': {
             'content': ',\n'}}]}},
             {'paragraph': {'elements': [{'textRun': {
             'content': 'MG1655_RPU_Standard\n'}}]}},
             {'paragraph': {'elements': [{'textRun': {
             'content': ',\n'}}]}},
             {'paragraph': {'elements': [{'textRun': {
             'content': 'MG1655_LPV3','textStyle': {'link': {'url': 'https://hub.sd2e.org/user/sd2e/design/MG1655_LPV3/1'}
                     }}}]}} ]}]}]
     } 
 
     ip_table = self.ip_table_factory.from_google_doc(input_table)
     ip_table.set_header_row_index(0)
     
     control_table_parser = ControlsTable(ip_table)
     control_result = control_table_parser.process_table()
     self.assertEquals(1, len(control_result))
     
     exp_res = ['MG1655', 'MG1655_RPU_Standard', 'MG1655_LPV3']
     self.assertListEqual(exp_res, control_result[0]['strains'])
Exemplo n.º 3
0
    def test_strains_with_uri_and_trailing_strings(self):
        ip_table = test_utils.create_fake_controls_table(1)
        control_type = IntentParserCell()
        control_type.add_paragraph('HIGH_FITC')

        strains = IntentParserCell()
        strains.add_paragraph(
            'MG1655', link='https://hub.sd2e.org/user/sd2e/design/MG1655/1')
        strains.add_paragraph(', MG1655_LPV3,MG1655_RPU_Standard')
        data_row = test_utils.create_control_table_row(
            strains_cell=strains, control_type_cell=control_type)
        ip_table.add_row(data_row)

        control_table_parser = ControlsTable(
            ip_table,
            strain_mapping=self.strain_mappings,
            control_types={'HIGH_FITC'})
        control_table_parser.process_table()
        control_result = control_table_parser.get_intents()
        self.assertEquals(1, len(control_result))

        exp_res = {
            'sbh_uri': 'https://hub.sd2e.org/user/sd2e/design/MG1655/1',
            'label': 'strain1',
            'lab_id': 'name.ip_admin.MG1655'
        }
        expected_result = {
            dc_constants.TYPE: 'HIGH_FITC',
            dc_constants.STRAINS: [exp_res]
        }
        self.assertEqual(expected_result,
                         control_result[0].to_structured_request())
Exemplo n.º 4
0
    def test_table_with_1_timepoint(self):
        ip_table = test_utils.create_fake_controls_table(1)
        content = IntentParserCell()
        content.add_paragraph('8 hour')

        control_type = IntentParserCell()
        control_type.add_paragraph('HIGH_FITC')

        data_row = test_utils.create_control_table_row(
            timepoint_cell=content, control_type_cell=control_type)
        ip_table.add_row(data_row)

        control_table_parser = ControlsTable(ip_table,
                                             timepoint_units={'hour'},
                                             control_types={'HIGH_FITC'})
        control_table_parser.process_table()
        control_result = control_table_parser.get_intents()
        self.assertEqual(1, len(control_result))
        expected_timepoint = {
            dc_constants.VALUE: 8.0,
            dc_constants.UNIT: 'hour'
        }
        expected_result = {
            dc_constants.TYPE: 'HIGH_FITC',
            dc_constants.TIMEPOINTS: [expected_timepoint]
        }
        self.assertEqual(expected_result,
                         control_result[0].to_structured_request())
 def test_table_with_multiple_channels(self):
     input_table = {'tableRows': [
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'Channel\n' }}]}}]}]},
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'BL1-A, BL2-A\n'}}]}}]}]}]
     } 
     ip_table = self.ip_table_factory.from_google_doc(input_table) 
     ip_table.set_header_row_index(0)
     control_table_parser = ControlsTable(ip_table)
     control_result = control_table_parser.process_table()
     self.assertEqual(1, len(control_result))
     self.assertEqual(control_result[0]['channel'], 'BL1-A')
 def test_table_with_control_type(self):
     input_table = {'tableRows': [
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'Control Type\n' }}]}}]}]},
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'HIGH_FITC\n'}}]}}]}]}]
     } 
     ip_table = self.ip_table_factory.from_google_doc(input_table) 
     ip_table.set_header_row_index(0)
     control_table_parser = ControlsTable(ip_table, control_types={'HIGH_FITC'})
     control_result = control_table_parser.process_table()
     self.assertEqual(1, len(control_result))
     self.assertEqual(control_result[0]['type'], 'HIGH_FITC')
 def test_strains_with_uris(self):
     input_table = {'tableRows': [
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'Strains\n' }}]}}]}]},
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'UWBF_7376','textStyle': {'link': {'url': 'https://hub.sd2e.org/user/sd2e/design/UWBF_7376/1'}
                     }}}]}}]}]}]
     } 
     ip_table = self.ip_table_factory.from_google_doc(input_table)
     ip_table.set_header_row_index(0)
     control_table_parser = ControlsTable(ip_table)
     control_result = control_table_parser.process_table()
     self.assertEquals(1, len(control_result))
     self.assertEqual(1, len(control_result[0]['strains']))
     self.assertEqual('UWBF_7376', control_result[0]['strains'][0])
Exemplo n.º 8
0
    def test_table_with_control_type(self):
        ip_table = test_utils.create_fake_controls_table(1)
        control_type = IntentParserCell()
        control_type.add_paragraph('HIGH_FITC')
        data_row = test_utils.create_control_table_row(
            control_type_cell=control_type)
        ip_table.add_row(data_row)

        control_table_parser = ControlsTable(ip_table,
                                             control_types={'HIGH_FITC'})
        control_table_parser.process_table()
        control_result = control_table_parser.get_intents()
        self.assertEqual(1, len(control_result))
        expected_result = {dc_constants.TYPE: 'HIGH_FITC'}
        self.assertEqual(expected_result,
                         control_result[0].to_structured_request())
 def test_table_with_1_strain(self):
     input_table = {'tableRows': [
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'Strains\n' }}]}}]}]},
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'UWBF_25784\n'}}]}}]}]}]
     } 
 
     ip_table = self.ip_table_factory.from_google_doc(input_table) 
     ip_table.set_header_row_index(0)
     
     control_table_parser = ControlsTable(ip_table)
     control_result = control_table_parser.process_table()
     self.assertEqual(1, len(control_result))
     actual_strains = control_result[0]['strains']
     self.assertEqual(1, len(actual_strains))
     self.assertEqual(actual_strains[0], 'UWBF_25784')
 def test_table_with_1_timepoint(self):
     input_table = {'tableRows': [
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'Timepoint\n' }}]}}]}]},
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': '8 hour\n'}}]}}]}]}]
     } 
 
     ip_table = self.ip_table_factory.from_google_doc(input_table) 
     ip_table.set_header_row_index(0)
     
     control_table_parser = ControlsTable(ip_table, timepoint_units={'hour'})
     control_result = control_table_parser.process_table()
     self.assertEqual(1, len(control_result))
     timepoint_list = control_result[0]['timepoints']
     self.assertEqual(1, len(timepoint_list))
     expected_timepoint = {'value': 8.0, 'unit': 'hour'}
     self.assertEqual(timepoint_list[0], expected_timepoint)
 def test_table_with_contents(self):
     input_table = {'tableRows': [
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'Contents\n' }}]}}]}]},
         {'tableCells': [{'content': [{'paragraph': {'elements': [{'textRun': {
             'content': 'beta_estradiol\n','textStyle': {'link': {'url': 'https://hub.sd2e.org/user/sd2e/design/beta_estradiol/1'}
                     } }}]}}]}]}]
     } 
     ip_table = self.ip_table_factory.from_google_doc(input_table) 
     ip_table.set_header_row_index(0)
     control_table_parser = ControlsTable(ip_table)
     control_result = control_table_parser.process_table()
     self.assertEqual(1, len(control_result))
     self.assertEqual(1, len(control_result[0]['contents']))
     content = control_result[0]['contents'][0]
     self.assertEqual(2, len(content['name']))
     self.assertEqual(content['name']['label'], 'beta_estradiol') 
     self.assertEqual(content['name']['sbh_uri'], 'https://hub.sd2e.org/user/sd2e/design/beta_estradiol/1') 
Exemplo n.º 12
0
    def test_table_with_multiple_channels(self):
        ip_table = test_utils.create_fake_controls_table(1)
        control_type = IntentParserCell()
        control_type.add_paragraph('HIGH_FITC')

        channel = IntentParserCell()
        channel.add_paragraph('BL1-A, BL2-A')
        data_row = test_utils.create_control_table_row(
            channel_cell=channel, control_type_cell=control_type)
        ip_table.add_row(data_row)

        control_table_parser = ControlsTable(ip_table,
                                             control_types={'HIGH_FITC'})
        control_table_parser.process_table()
        control_result = control_table_parser.get_intents()
        expected_result = {
            dc_constants.TYPE: 'HIGH_FITC',
            dc_constants.CHANNEL: 'BL1-A'
        }
        self.assertEqual(expected_result,
                         control_result[0].to_structured_request())
    def process_control_tables(self, control_tables):
        if not control_tables:
            self.validation_warnings.append('No measurement table to parse from document.')
            return

        strain_mapping = {}
        try:
            strain_mapping = self.sbol_dictionary.get_mapped_strain(self.processed_labs[dc_constants.LAB])
        except (DictionaryMaintainerException, TableException) as err:
            self.validation_errors.extend([err.get_message()])

        for table in control_tables:
            controls_table = ControlsTable(table,
                                           control_types=self.catalog_accessor.get_control_type(),
                                           fluid_units=self.catalog_accessor.get_fluid_units(),
                                           timepoint_units=self.catalog_accessor.get_time_units(),
                                           strain_mapping=strain_mapping)
            controls_table.process_table()
            control_intents = controls_table.get_intents()
            table_caption = controls_table.get_table_caption()
            if table_caption:
                self.processed_controls[table_caption] = control_intents
            self.validation_errors.extend(controls_table.get_validation_errors())
            self.validation_warnings.extend(controls_table.get_validation_warnings())
 def _process_control_tables(self, control_tables):
     ref_controls = {}
     if not control_tables:
         return ref_controls
     
     for table in control_tables:
         controls_table = ControlsTable(table, 
                                        self.catalog_accessor.get_control_type(),
                                        self.catalog_accessor.get_fluid_units(),
                                        self.catalog_accessor.get_time_units()) 
         controls_data = controls_table.process_table()
         table_caption = controls_table.get_table_caption()
         if table_caption:
             ref_controls[table_caption] = controls_data
         self.validation_errors.extend(controls_table.get_validation_errors())
         self.validation_warnings.extend(controls_table.get_validation_warnings())
     return ref_controls
Exemplo n.º 15
0
    def _process_control_tables(self, control_tables, strain_mapping):
        if not control_tables:
            self.validation_errors.append(
                'No control tables to parse from document.')
            return
        try:
            for table in control_tables:
                controls_table = ControlsTable(
                    table,
                    control_types=self._CONTROL_TYPES,
                    fluid_units=self._FLUID_UNITS,
                    timepoint_units=self._TIME_UNITS,
                    strain_mapping=strain_mapping)
                controls_table.process_table()
                table_caption = controls_table.get_table_caption()
                if table_caption:
                    self.processed_controls[table_caption] = controls_table

                self.validation_errors.extend(
                    controls_table.get_validation_errors())
                self.validation_warnings.extend(
                    controls_table.get_validation_warnings())
        except IntentParserException as err:
            self.validation_errors.extend([err.get_message()])