示例#1
0
 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')
示例#2
0
 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')
示例#3
0
 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')
示例#4
0
 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')
示例#5
0
    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]
示例#6
0
    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)
示例#7
0
    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
示例#8
0
    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
示例#9
0
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
示例#10
0
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
示例#11
0
    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
示例#12
0
 def tearDown(self):
     logger.debug('TEST END!')