def _dispatch(modules, arguments): try: command, args = _parse_command_line_args(modules, arguments) execution_context = _get_execution_context(arguments) logger.initialize_logger(args) logger.debug("Jacquard run begins") logger.debug("cwd|{}", os.getcwd()) logger.debug("command|{}", " ".join(arguments)) command_validator.preflight(command, args) logger.info("Jacquard begins (v{})", __version__) logger.info("Saving log to [{}]", os.path.basename(logger.log_filename)) logger.debug("Writing output to tmp directory [{}]", args.temp_working_dir) command.execute(args, execution_context) _move_tmp_contents_to_original(args) if logger.WARNING_OCCURRED: logger.info("Done. (See warnings above)") else: logger.info("Done") except utils.UsageError as usage_error: message = "Jacquard usage problem: {}".format(str(usage_error)) logger.debug(message) print(message, file=sys.stderr) try: print("See 'jacquard {} --help'.".format(args.subparser_name), file=sys.stderr) except NameError: #could not determine the command print("See 'jacquard --help'.", file=sys.stderr) sys.exit(1) except Exception as exception: #pylint: disable=broad-except logger.error(str(exception)) logger.error("Jacquard encountered an unanticipated problem. " "Please review log file and contact your sysadmin " "or Jacquard support for assistance.") logger.debug(traceback.format_exc()) sys.exit(1) finally: try: _cleanup(args.temp_working_dir) except Exception: #pylint: disable=broad-except pass #we tried
def _check_snp_indel_pairings(altered_file_names, args): if not set([len(i) for i in altered_file_names.values()]) == set([1]): if not args.allow_inconsistent_sample_sets: error = 0 for file_names in altered_file_names.values(): if len(file_names) % 2 != 0: message = ("File {} was missing a " "corresponding snp/indel file.") logger.error(message, file_names) error = 1 if error: message = ("Not all patients were represented by the same set " "of caller-VCFs. Review inputs/command options to " "align file pairings or use the flag " "--allow_inconsistent_sample_sets.") raise utils.UsageError(message)
def test_error(self): tool = "foo" args = Namespace(subparser_name=tool, log_file=None, verbose=None) logger.initialize_logger(args) logger.error("bar") root_logger = logger.logging.getLogger() current_time = datetime.now().strftime('%Y-%m-%d') output_lines = self.output.getvalue().rstrip().split("\n") ##nosetests overwrites logger.FileHandler self.assertEquals(["root: ERROR: bar"], root_logger.handlers[0].buffer) self.assertRegexpMatches(output_lines[0], "" + current_time + r".*\|ERROR\|foo\|bar")
def _validate_vcf_readers(prefix_by_patients): number_of_files = set() for file_names in prefix_by_patients.values(): if len(file_names) == 1: for file_name in file_names: if re.search("snp", file_name): msg = "VarScan VCF [{}] has no indel file." logger.error(msg, file_name) elif re.search("indel", file_name): msg = "VarScan VCF [{}] has no snp file." logger.error(msg, file_name) number_of_files.add(len(file_names)) if len(number_of_files) > 1: msg = ("Some Varscan VCFs were missing either a snp or indel file. " "Review inputs/command options and try again.") raise utils.JQException(msg)
def test_error(self): tool = "foo" args = Namespace(subparser_name=tool, log_file=None, verbose=None) logger.initialize_logger(args) logger.error("bar") root_logger = logger.logging.getLogger() current_time = datetime.now().strftime('%Y-%m-%d') output_lines = self.output.getvalue().rstrip().split("\n") ##nosetests overwrites logger.FileHandler self.assertEquals(["root: ERROR: bar"], root_logger.handlers[0].buffer) self.assertRegexpMatches(output_lines[0], ""+current_time+r".*\|ERROR\|foo\|bar")
def _validate_vcf_readers(prefix_by_patients): number_of_files = set() for file_names in prefix_by_patients.values(): if len(file_names) == 1: for file_name in file_names: if re.search("snvs", file_name): msg = "Strelka VCF [{}] has no indels file." logger.error(msg, file_name) elif re.search("indels", file_name): msg = "Strelka VCF [{}] has no snvs file." logger.error(msg, file_name) number_of_files.add(len(file_names)) if len(number_of_files) > 1: msg = ("Some Strelka VCFs were missing either a snvs or indels " "file. Review inputs/command options and try again.") raise utils.JQException(msg)