예제 #1
0
def main(argv=None):
    """ Runs the main program.

    :param argv: The command line arguments.
    :return: The return code for the program's termination.
    """
    args, ret = parse_cmdline(argv)
    if ret != GOOD_RET or args is None:
        return ret

    kbt = calc_kbt(args.temp)

    if args.src_file is not None:
        proc_data = to_zero_point(calc_rad(args.src_file, kbt))
        write_csv(proc_data, create_out_fname(args.src_file, prefix=OUT_PFX),
                  RAD_KEY_SEQ)
    else:
        found_files = find_files_by_dir(args.base_dir, args.pattern)
        logger.debug("Found '{}' dirs with files to process".format(
            len(found_files)))
        # noinspection PyCompatibility
        for f_dir, files in found_files.items():
            if not files:
                logger.warn("No files found for dir '{}'".format(f_dir))
                continue
            for pmf_path in ([os.path.join(f_dir, tgt) for tgt in files]):
                proc_data = to_zero_point(calc_rad(pmf_path, kbt))
                f_name = create_out_fname(pmf_path, prefix=OUT_PFX)
                if allow_write(f_name, overwrite=args.overwrite):
                    write_csv(proc_data, f_name, RAD_KEY_SEQ)
    return GOOD_RET  # success
예제 #2
0
def main(argv=None):
    """ Runs the main program.

    :param argv: The command line arguments.
    :return: The return code for the program's termination.
    """
    args, ret = parse_cmdline(argv)
    if ret != GOOD_RET or args is None:
        return ret

    kbt = calc_kbt(args.temp)

    if args.src_file is not None:
        proc_data = to_zero_point(calc_rad(args.src_file, kbt))
        write_csv(proc_data, create_out_fname(args.src_file, prefix=OUT_PFX), RAD_KEY_SEQ)
    else:
        found_files = find_files_by_dir(args.base_dir, args.pattern)
        logger.debug("Found '{}' dirs with files to process".format(len(found_files)))
        # noinspection PyCompatibility
        for f_dir, files in found_files.iteritems():
            if not files:
                logger.warn("No files found for dir '{}'".format(f_dir))
                continue
            for pmf_path in ([os.path.join(f_dir, tgt) for tgt in files]):
                proc_data = to_zero_point(calc_rad(pmf_path, kbt))
                f_name = create_out_fname(pmf_path, prefix=OUT_PFX)
                if allow_write(f_name, overwrite=args.overwrite):
                    write_csv(proc_data, f_name, RAD_KEY_SEQ)
    return GOOD_RET  # success
예제 #3
0
 def testGood(self):
     pka_val = calc_pka(
         read_csv(GOOD_RAD_PATH,
                  data_conv={
                      FREE_KEY: float,
                      CORR_KEY: float,
                      COORD_KEY: float,
                  }), calc_kbt(EXP_TEMP))
     self.assertAlmostEqual(4.7036736, pka_val[0])
예제 #4
0
 def testNoMax(self):
     with self.assertRaises(NoMaxError) as context:
         calc_pka(
             read_csv(NO_MAX_RAD_PATH,
                      data_conv={
                          FREE_KEY: float,
                          CORR_KEY: float,
                          COORD_KEY: float,
                      }), calc_kbt(EXP_TEMP))
     self.assertTrue(NO_MAX_ERR in context.exception.args)
예제 #5
0
def main(argv=None):
    """ Runs the main program.

    :param argv: The command line arguments.
    :return: The return code for the program's termination.
    """
    args, ret = parse_cmdline(argv)
    if ret != GOOD_RET:
        return ret

    kbt = calc_kbt(args.temp)
    if args.coord_ts is not None:
        logger.info("Read TS coordinate value: '{:8.3f}'".format(args.coord_ts))

    try:
        if args.src_file is not None:
            file_data = read_csv(args.src_file, data_conv=KEY_CONV)
            f_base_name = os.path.basename(args.src_file)
            try:
                pka, cur_corr, cur_coord = calc_pka(file_data, kbt, args.coord_ts)
                result = [{SRC_KEY: f_base_name, PKA_KEY: pka, MAX_VAL: cur_corr, MAX_LOC: cur_coord}]
            except NoMaxError:
                result = [{SRC_KEY: f_base_name, PKA_KEY: NO_MAX_RET, MAX_VAL: NO_MAX_RET, MAX_LOC: NO_MAX_RET}]
            write_result(result, args.src_file, args.overwrite)
        else:
            found_files = find_files_by_dir(args.base_dir, args.pattern)
            logger.debug("Found '{}' dirs with files to process".format(len(found_files)))
            if len(found_files) == 0:
                raise IOError("No files found in specified directory '{}'".format(args.base_dir))
            for f_dir, files in found_files.items():
                results = []
                for pmf_path, fname in ([(os.path.join(f_dir, tgt), tgt) for tgt in sorted(files)]):
                    file_data = read_csv(pmf_path, data_conv=KEY_CONV)
                    try:
                        pka, cur_corr, cur_coord = calc_pka(file_data, kbt, args.coord_ts)
                        results.append({SRC_KEY: fname, PKA_KEY: pka, MAX_VAL: cur_corr, MAX_LOC: cur_coord})
                    except NoMaxError:
                        results.append({SRC_KEY: fname, PKA_KEY: NO_MAX_RET, MAX_VAL: NO_MAX_RET,
                                        MAX_LOC: NO_MAX_RET})

                write_result(results, os.path.basename(f_dir), args.overwrite,
                             basedir=os.path.dirname(f_dir))
    except IOError as e:
        warning(e)
        return IO_ERROR

    return GOOD_RET  # success
예제 #6
0
 def testNoMax(self):
     with self.assertRaises(NoMaxError) as context:
         calc_pka(read_csv(NO_MAX_RAD_PATH,
                           data_conv={FREE_KEY: float, CORR_KEY: float, COORD_KEY: float, }),
                  calc_kbt(EXP_TEMP))
     self.assertTrue(NO_MAX_ERR in context.exception.args)
예제 #7
0
 def testGood(self):
     pka_val = calc_pka(read_csv(GOOD_RAD_PATH,
                                 data_conv={FREE_KEY: float, CORR_KEY: float, COORD_KEY: float, }),
                        calc_kbt(EXP_TEMP))
     self.assertAlmostEqual(4.7036736, pka_val[0])