def test_epiLION_Converter_bad_input(self): logger.debug('test bad input...') result = convLION.main(self.fail_input_params) if result is False: logger.debug('test bad input... PASSED') else: raise Exception('test bad input... Failed')
def test_epiLION_Converter_good_input(self): logger.debug('test sample data...') result = convLION.main(self.pass_params) if result is True: logger.debug('test sample data... PASSED') else: raise Exception('test sample data... Failed')
def test_epiLION_Converter_help(): logger.debug('test help...') result = convLION.main(['-h']) if result is False: logger.debug('test help... PASSED') else: raise Exception('test help... Failed')
def test_epiLION_Converter_bad_params(): logger.debug('test bad params...') result = convLION.main(['-test']) if result is False: logger.debug('test bad parameter... PASSED') else: raise Exception('test bad parameter... Failed')
def setUp(self): logger.debug('SETUP TESTS...') in_file_lst = [ r'../test/TestInput/test_crosscheck.xlsx', r'test/TestInput/test_crosscheck.xlsx', r'../TestInput/test_crosscheck.xlsx', r'TestInput/test_crosscheck.xlsx', ] in_file = '' for f in in_file_lst: if os.path.isfile(f): in_file = os.path.abspath(f) break logger.info(f'Input file {in_file}') bad_in_file = r'test/TestInput/test_crosscheck_x.txt' out_folder_lst = [ r'../test/TestOutput/', r'test/TestOutput/', r'../TestOutput/', r'TestOutput/', ] out_folder = '' for p in out_folder_lst: if os.path.isdir(p): out_folder = os.path.abspath(p) break out_file = os.path.join(out_folder, 'test_crosscheck_output.csv') logger.info(f'Out put file will be: {out_file}') self.pass_params = ['-i', in_file, '-o', out_file] self.fail_input_params = ['-i', bad_in_file, '-o', out_file]
def convert_table(self, input_file: str, output_file: str): abbr_dct = self.load_file(input_file) epilion_dct = {} for k in abbr_dct: tmp_abbr_lst = abbr_dct[k] epilion_lst = [] for abbr in tmp_abbr_lst: abbr = re.sub(r' ', '', abbr) epilion_abbr = '' # Try to parse to software generated abbreviations abbr_epilion_lst = [] if self.abbr_parser.is_lpptiger(abbr): epilion_lpptiger_abbr = self.abbr_parser.parse_lpptiger( abbr) logger.debug( f'{k} - LPPtiger: {abbr} -> {epilion_lpptiger_abbr}') abbr_epilion_lst.append(epilion_lpptiger_abbr) if self.abbr_parser.is_lipostar(abbr)[0]: epilion_lipostar_abbr = self.abbr_parser.parse_lipostar( abbr) logger.debug( f'{k} - Lipostar: {abbr} -> {epilion_lipostar_abbr}') abbr_epilion_lst.append(epilion_lipostar_abbr) if self.abbr_parser.is_lipidmaps(abbr)[0]: epilion_lipidmaps_abbr = self.abbr_parser.parse_lipidmaps( abbr) logger.debug( f'{k} - LIPIDMAPS: {abbr} -> {epilion_lipidmaps_abbr}') abbr_epilion_lst.append(epilion_lipidmaps_abbr) if self.abbr_parser.is_legacy(abbr)[0]: # logger.info(f'Try to parse in Legacy mode for {k} - {abbr}') epilion_legacy_abbr = self.abbr_parser.parse_legacy(abbr) logger.debug( f'{k} - Legacy: {abbr} -> {epilion_legacy_abbr}') abbr_epilion_lst.append(epilion_legacy_abbr) if abbr_epilion_lst: epilion_abbr = sorted(abbr_epilion_lst, key=len)[-1] else: epilion_abbr = '' if not epilion_abbr: logger.warning(f'! Can NOT convert Column {k} - {abbr}') epilion_lst.append(epilion_abbr) # logger.info(epilion_lst) epilion_dct[k] = epilion_lst # logger.info(epilion_dct) out_df = pd.DataFrame.from_dict(epilion_dct, orient='index').T if output_file.endswith('.xlsx'): out_df.to_excel(output_file, index=False) elif output_file.endswith('.csv'): out_df.to_csv(output_file, index=False) else: out_df.to_excel(output_file + '.xlsx', index=False)
def convert_abbr(self, abbr: str) -> str: abbr = re.sub(r' ', '', abbr) # Try to parse to software generated abbreviations abbr_epilion_lst = [] if self.abbr_parser.is_lpptiger(abbr): epilion_lpptiger_abbr = self.abbr_parser.parse_lpptiger(abbr) logger.debug(f'LPPtiger: {abbr} -> {epilion_lpptiger_abbr}') abbr_epilion_lst.append(epilion_lpptiger_abbr) if self.abbr_parser.is_lipostar(abbr)[0]: epilion_lipostar_abbr = self.abbr_parser.parse_lipostar(abbr) logger.debug(f'Lipostar: {abbr} -> {epilion_lipostar_abbr}') abbr_epilion_lst.append(epilion_lipostar_abbr) if self.abbr_parser.is_lipidmaps(abbr)[0]: epilion_lipidmaps_abbr = self.abbr_parser.parse_lipidmaps(abbr) logger.debug(f'LIPIDMAPS: {abbr} -> {epilion_lipidmaps_abbr}') abbr_epilion_lst.append(epilion_lipidmaps_abbr) if self.abbr_parser.is_legacy(abbr)[0]: # logger.info(f'Try to parse in Legacy mode for {k} - {abbr}') epilion_legacy_abbr = self.abbr_parser.parse_legacy(abbr) logger.debug(f'Legacy: {abbr} -> {epilion_legacy_abbr}') abbr_epilion_lst.append(epilion_legacy_abbr) if abbr_epilion_lst: epilion_abbr = sorted(abbr_epilion_lst, key=len)[-1] else: epilion_abbr = '' if not epilion_abbr: logger.warning(f'! Can NOT convert {abbr}') return epilion_abbr
def decode_mod(self, abbr: str) -> list: fin_mod_info_lst = [] mod_info_lst = self.find_all(abbr, 'mod') for mod_dct in mod_info_lst: if mod_dct['SITE_INFO']: mod_dct['SITE'] = self.decode_site(mod_dct['SITE_INFO']) else: mod_dct['SITE'] = None fin_mod_info_lst.append(mod_dct) logger.debug('MOD info:') logger.debug(fin_mod_info_lst) return fin_mod_info_lst
def main(argv): """ :param argv: -i <input epiLION abbreviation file in .txt format> """ in_file = '' out_file = '' is_output = False try: opts, args = getopt.getopt(argv, "hi:o:", ["infile=", "outfile="]) logger.debug(f'User input: {opts}, {args}') except getopt.GetoptError: logger.info('epiLIONConverter.py -i <input_file> -o <output_file>') return is_output for opt, arg in opts: if opt == '-h': logger.info('epiLIONConverter.py -i <input_file> -o <output_file>') return is_output elif opt in ("-i", "--infile"): in_file = arg elif opt in ("-o", "--outfile"): out_file = arg if os.path.isfile(in_file): logger.info(f'Load input file: {in_file}') converter = Converter(abbr_cfg_path) converter.convert_table(in_file, out_file) logger.info(f'Save output file: {out_file}') logger.info('FINISHED') is_output = True logger.info(f'is_output {is_output}') else: logger.error(f'Can NOT open input file:') logger.error(in_file) logger.error('!!! FAILED to PROCESS !!!') return is_output
def main(argv): """ :param argv: -i <input epiLION abbreviation file in .txt format> """ in_file = '' out_file = '' is_output = False try: opts, args = getopt.getopt(argv, "hi:o:", ["infile=", "outfile="]) logger.debug(f'User input: {opts}, {args}') except getopt.GetoptError: logger.info('epiLION.py -i <input_file> -o <output_file>') return is_output for opt, arg in opts: if opt == '-h': logger.info('epiLION.py -i <input_file> -o <output_file>') return is_output elif opt in ("-i", "--infile"): in_file = arg elif opt in ("-o", "--outfile"): out_file = arg if os.path.isfile(in_file): logger.info(f'Load input file: {in_file}') with open(in_file, 'r') as in_obj: in_lst = in_obj.readlines() epilion2sdf(in_lst, out_file) logger.info(f'Save output file: {out_file}') logger.info('FINISHED') is_output = True else: logger.error(f'Can NOT open input file:') logger.error(in_file) logger.error('!!! FAILED to PROCESS !!!') return is_output
def decode_fa(self, abbr: str) -> dict: fa_info_dct = {} if abbr: logger.debug(f'FA_ABBR: {abbr}') fa_match = re.match(self.fa_rgx, abbr) if fa_match: fa_info_dct = fa_match.groupdict() else: logger.warning('FA abbreviation is None!') mod_info = fa_info_dct['MOD_INFO'] if mod_info and isinstance(mod_info, str): mod_info = mod_info.strip('[]') logger.debug(mod_info) mod_info_dct = self.mod_parser.decode_mod(mod_info) else: mod_info_dct = {} fa_info_dct['MOD'] = mod_info_dct return fa_info_dct
def tearDown(self): logger.debug('TEST END!')