def test_unused_protocol_fixer(self): i_table_path = os.path.join(self._tmp_dir, 'BII-S-3', 'i_gilbert.txt') fixer = utils.IsaTabFixer(i_table_path) fixer.remove_unused_protocols() with open('{}.fix'.format(i_table_path)) as fixed_i_fp: investigation = isatab.load(fixed_i_fp) study = investigation.studies[-1] unused_protocol1 = \ study.get_prot('reverse transcription - standard procedure 5') unused_protocol2 = \ study.get_prot('sequence analysis - standard procedure 7') self.assertIsNone(unused_protocol1) self.assertIsNone(unused_protocol2)
def test_replace_factor_with_source_characteristic(self): fixer = utils.IsaTabFixer(os.path.join(self._tmp_dir, 's_BII-S-1.txt')) fixer.replace_factor_with_source_characteristic('limiting nutrient') expected_field_names = [ 'Source Name', 'Factor Value[limiting nutrient]', 'Term Source REF', 'Term Accession Number', 'Characteristics[organism]', 'Term Source REF', 'Term Accession Number', 'Characteristics[strain]', 'Term Source REF', 'Term Accession Number', 'Characteristics[genotype]', 'Term Source REF', 'Term Accession Number', 'Protocol REF', 'Sample Name', 'Factor Value[rate]', 'Unit', 'Term Source REF', 'Term Accession Number' ] with open(os.path.join(self._tmp_dir, 's_BII-S-1.txt')) as fixed_tab_fp: actual_field_names = list( map(lambda field_name: field_name.strip(), next(fixed_tab_fp).split('\t'))) self.assertListEqual(actual_field_names, expected_field_names)
def test_fix_factor_two_args(self): s_table_path = os.path.join(self._tmp_dir, 'BII-S-3', 's_BII-S-3.txt') fixer = utils.IsaTabFixer(s_table_path) fixer.fix_factor( 'dose', 'environmental material collection - standard procedure 1') expected_field_names = [ 'Source Name', 'Characteristics[organism]', 'Term Source REF', 'Term Accession Number', 'Characteristics[geographic location (country and/or sea,region)]', 'Term Source REF', 'Term Accession Number', 'Characteristics[geographic location (longitude)]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[geographic location (latitude)]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[chlorophyll a concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[fucoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[peridinin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[butfucoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[hexfucoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[alloxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[zeaxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[lutein concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[chl-c3 concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[chl-c2 concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[prasinoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[neoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[violaxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[diadinoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[diatoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[divinyl-chl-b concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[chl-b concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[divinyl-chl-a concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[chl-a concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[BB carotene concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[bacteria count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[synechococcus count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[small picoeukaryotes count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[large picoeukaryotes count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[nanoflagellates count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[cryptophytes count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[phosphate concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[nitrate concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[particulate organic nitrogen concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[particulate organic carbon concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[primary production depth integrated production to ' '3 m expressed_in mgC m-2 d-1]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[water salinity]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[fluorescence]', 'Term Source REF', 'Term Accession Number', 'Characteristics[water temperature at 3 meter depth]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Protocol REF', 'Parameter Value[dose]', 'Term Source REF', 'Term Accession Number', 'Parameter Value[filter pore size]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Sample Name', 'Factor Value[compound]', 'Term Source REF', 'Term Accession Number', 'Factor Value[collection time]', 'Term Source REF', 'Term Accession Number'] # check the columns got moved in the study file with open(s_table_path + '.fix') as fixed_tab_fp: actual_field_names = list( map(lambda field_name: field_name.strip(), next(fixed_tab_fp).split('\t'))) self.assertListEqual(actual_field_names, expected_field_names) # check the param got added to protocol and factor removed from study with open(os.path.dirname( s_table_path) + '/i_Investigation.txt.fix') as fixed_i_fp: investigation = isatab.load(fixed_i_fp) study = investigation.studies[-1] protocol = study.get_prot( 'environmental material collection - standard procedure 1') param = protocol.get_param('dose') self.assertIsNotNone(param) factor = study.get_factor('dose') self.assertIsNone(factor)
def test_fix_factor_one_arg(self): s_table_path = os.path.join(self._tmp_dir, 'BII-S-3', 's_BII-S-3.txt') fixer = utils.IsaTabFixer(s_table_path) fixer.fix_factor('dose') expected_field_names = [ 'Source Name', 'Characteristics[dose]', 'Term Source REF', 'Term Accession Number', 'Characteristics[organism]', 'Term Source REF', 'Term Accession Number', 'Characteristics[geographic location (country and/or sea,region)]', 'Term Source REF', 'Term Accession Number', 'Characteristics[geographic location (longitude)]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[geographic location (latitude)]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[chlorophyll a concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[fucoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[peridinin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[butfucoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[hexfucoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[alloxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[zeaxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[lutein concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[chl-c3 concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[chl-c2 concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[prasinoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[neoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[violaxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[diadinoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[diatoxanthin concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[divinyl-chl-b concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[chl-b concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[divinyl-chl-a concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[chl-a concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[BB carotene concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[bacteria count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[synechococcus count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[small picoeukaryotes count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[large picoeukaryotes count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[nanoflagellates count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[cryptophytes count]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[phosphate concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[nitrate concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[particulate organic nitrogen concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[particulate organic carbon concentration]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[primary production depth integrated production to ' '3 m expressed_in mgC m-2 d-1]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[water salinity]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Characteristics[fluorescence]', 'Term Source REF', 'Term Accession Number', 'Characteristics[water temperature at 3 meter depth]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Protocol REF', 'Parameter Value[filter pore size]', 'Unit', 'Term Source REF', 'Term Accession Number', 'Sample Name', 'Factor Value[compound]', 'Term Source REF', 'Term Accession Number', 'Factor Value[collection time]', 'Term Source REF', 'Term Accession Number'] with open(s_table_path) as fixed_tab_fp: actual_field_names = list( map(lambda field_name: field_name.strip(), next(fixed_tab_fp).split('\t'))) self.assertListEqual(actual_field_names, expected_field_names)