Example #1
0
 def _handler(dummy_signum, dummy_frame):
     msg = "WARNING: Jacquard was interrupted before completing."
     try:
         logger.debug(msg)
     finally:
         print(msg, file=sys.stderr)
         exit(1)
Example #2
0
 def _handler(dummy_signum, dummy_frame):
     msg = "WARNING: Jacquard was interrupted before completing."
     try:
         logger.debug(msg)
     finally:
         print(msg, file=sys.stderr)
         exit(1)
Example #3
0
    def test_initialize_logger_notVerbose(self):
        tool = "foo"
        args = Namespace(subparser_name=tool, log_file=None, verbose=None)
        logger.initialize_logger(args)
        logger.debug("bar")

        output_lines = self.output.getvalue().rstrip().split("\n")
        root_logger = logger.logging.getLogger()
        self.assertEquals(["root: DEBUG: bar"], root_logger.handlers[0].buffer)
        self.assertEquals(output_lines[0], "")
Example #4
0
def _move_tmp_contents_to_original(args):
    temp_dir = args.temp_working_dir
    dest_dir = os.path.dirname(args.temp_working_dir)

    logger.debug(
        "Moving files from tmp directory [{}] to output "
        "directory [{}]", temp_dir, dest_dir)
    distutils.dir_util.copy_tree(temp_dir, dest_dir)
    logger.debug("Output saved to [{}]", os.path.abspath(args.original_output))
    logger.info("Output saved to [{}]", args.original_output)
    _cleanup(temp_dir)
Example #5
0
def execute(args, dummy_execution_context):
    #for the moment, there is no good place to put the execution context
    input_file = os.path.abspath(args.input)
    output_file = os.path.abspath(args.output)
    col_spec = None
    if args.selected_columns_file:
        col_spec = args.selected_columns_file

    logger.debug("Expanding [{}] to [{}]",
                 input_file,
                 output_file)
    logger.info("Expanding [{}] to [{}]",
                args.input,
                args.original_output)

    vcf_reader = vcf.VcfReader(vcf.FileReader(input_file))
    file_writer = vcf.FileWriter(output_file)
    file_writer.open()

    (columns, glossary_fields) = _get_actual_columns(vcf_reader, col_spec)

    file_writer.write("#" + "\t".join(columns) + "\n")

    line_count = 0
    vcf_reader.open()
    for vcf_record in vcf_reader.vcf_records():
        row_dict = _create_row_dict(vcf_reader.split_column_header,
                                    vcf_record)

        new_line = []
        for col in columns:
            if col in row_dict:
                new_line.append(row_dict[col])
            else:
                new_line.append(".")

        file_writer.write("\t".join(new_line) + "\n")
        line_count +=1
        if line_count % 10000 == 0:
            logger.info("Expanding: {} rows processed", line_count)
    logger.info("Expand complete: {} rows processed", line_count)

    file_writer.close()

    glossary_writer = _get_glossary_writer(output_file)
    glossary_writer.open()
    _create_glossary(vcf_reader.metaheaders, glossary_fields, glossary_writer)
    glossary_writer.close()
    logger.info("Wrote glossary to [{}]",
                os.path.basename(glossary_writer.output_filepath))

    vcf_reader.close()
    logger.debug("Wrote input [{}] to output [{}]", input_file, output_file)
Example #6
0
def _move_tmp_contents_to_original(args):
    temp_dir = args.temp_working_dir
    dest_dir = os.path.dirname(args.temp_working_dir)

    logger.debug("Moving files from tmp directory [{}] to output "
                 "directory [{}]",
                 temp_dir,
                 dest_dir)
    distutils.dir_util.copy_tree(temp_dir, dest_dir)
    logger.debug("Output saved to [{}]", os.path.abspath(args.original_output))
    logger.info("Output saved to [{}]", args.original_output)
    _cleanup(temp_dir)
    def test_initialize_logger_notVerbose(self):
        tool = "foo"
        args = Namespace(subparser_name=tool,
                         log_file=None,
                         verbose=None)
        logger.initialize_logger(args)
        logger.debug("bar")

        output_lines = self.output.getvalue().rstrip().split("\n")
        root_logger = logger.logging.getLogger()
        self.assertEquals(["root: DEBUG: bar"], root_logger.handlers[0].buffer)
        self.assertEquals(output_lines[0], "")
Example #8
0
    def log_statistics(self):
        cell_msg = "{}% ({}) cells were excluded because (--include_cells={})"
        logger.info(cell_msg,
                    int(round(100 * self.cells_excluded / self.cell_count, 0)),
                    self.cells_excluded, self._args.include_cells)

        row_msg = "{}% ({}) rows were excluded because (--include_rows={})"
        logger.info(row_msg,
                    int(round(100 * self.rows_excluded / self.row_count, 0)),
                    self.rows_excluded, self._args.include_rows)

        for key, count in self.excluded_breakdown.items():
            msg = "{} cells were excluded with [{}]"
            logger.debug(msg, count, key)
Example #9
0
    def test_initialize_logger_verbose(self):
        tool = "foo"
        args = Namespace(subparser_name=tool, log_file=None, verbose=True)
        logger.initialize_logger(args)
        logger.debug("bar")
        root_logger = logger.logging.getLogger()

        current_time = datetime.now().strftime('%Y-%m-%d')
        output_lines = self.output.getvalue().rstrip().split("\n")
        self.assertRegexpMatches(output_lines[0],
                                 "" + current_time + r".*\|DEBUG\|foo\|bar")

        self.assertEquals(["root: DEBUG: bar"], root_logger.handlers[0].buffer)
        self.assertRegexpMatches(output_lines[0],
                                 r"" + current_time + "|DEBUG|foo|bar'")
Example #10
0
    def test_initialize_logger_verbose(self):
        tool = "foo"
        args = Namespace(subparser_name=tool,
                         log_file=None,
                         verbose=True)
        logger.initialize_logger(args)
        logger.debug("bar")
        root_logger = logger.logging.getLogger()

        current_time = datetime.now().strftime('%Y-%m-%d')
        output_lines = self.output.getvalue().rstrip().split("\n")
        self.assertRegexpMatches(output_lines[0], ""+current_time+r".*\|DEBUG\|foo\|bar")

        self.assertEquals(["root: DEBUG: bar"], root_logger.handlers[0].buffer)
        self.assertRegexpMatches(output_lines[0], r""+current_time+"|DEBUG|foo|bar'")
Example #11
0
def execute(args, dummy_execution_context):
    #for the moment, there is no good place to put the execution context
    input_file = os.path.abspath(args.input)
    output_file = os.path.abspath(args.output)
    col_spec = None
    if args.selected_columns_file:
        col_spec = args.selected_columns_file

    logger.debug("Expanding [{}] to [{}]", input_file, output_file)
    logger.info("Expanding [{}] to [{}]", args.input, args.original_output)

    vcf_reader = vcf.VcfReader(vcf.FileReader(input_file))
    file_writer = vcf.FileWriter(output_file)
    file_writer.open()

    (columns, glossary_fields) = _get_actual_columns(vcf_reader, col_spec)

    file_writer.write("#" + "\t".join(columns) + "\n")

    line_count = 0
    vcf_reader.open()
    for vcf_record in vcf_reader.vcf_records():
        row_dict = _create_row_dict(vcf_reader.split_column_header, vcf_record)

        new_line = []
        for col in columns:
            if col in row_dict:
                new_line.append(row_dict[col])
            else:
                new_line.append(".")

        file_writer.write("\t".join(new_line) + "\n")
        line_count += 1
        if line_count % 10000 == 0:
            logger.info("Expanding: {} rows processed", line_count)
    logger.info("Expand complete: {} rows processed", line_count)

    file_writer.close()

    glossary_writer = _get_glossary_writer(output_file)
    glossary_writer.open()
    _create_glossary(vcf_reader.metaheaders, glossary_fields, glossary_writer)
    glossary_writer.close()
    logger.info("Wrote glossary to [{}]",
                os.path.basename(glossary_writer.output_filepath))

    vcf_reader.close()
    logger.debug("Wrote input [{}] to output [{}]", input_file, output_file)
Example #12
0
    def log_statistics(self):
        cell_msg = "{}% ({}) cells were excluded because (--include_cells={})"
        logger.info(cell_msg,
                    int(round(100 * self.cells_excluded / self.cell_count, 0)),
                    self.cells_excluded,
                    self._args.include_cells)

        row_msg = "{}% ({}) rows were excluded because (--include_rows={})"
        logger.info(row_msg,
                    int(round(100 * self.rows_excluded / self.row_count, 0)),
                    self.rows_excluded,
                    self._args.include_rows)

        for key, count in self.excluded_breakdown.items():
            msg = "{} cells were excluded with [{}]"
            logger.debug(msg, count, key)
Example #13
0
def _get_unsorted_readers(vcf_readers):
    unsorted_readers = []
    for i, reader in enumerate(vcf_readers):
        logger.info("Checking sort order of [{}] ({}/{})", reader.file_name,
                    i + 1, len(vcf_readers))
        previous_record = None
        reader.open()
        for vcf_record in reader.vcf_records():
            if previous_record and vcf_record < previous_record:
                logger.debug(
                    "VCF file:chrom:pos [{}:{}:{}] is out of order".format(
                        reader.file_name, vcf_record.chrom, vcf_record.pos))
                unsorted_readers.append(reader)
                break
            else:
                previous_record = vcf_record
        reader.close()
    return unsorted_readers
Example #14
0
def _get_unsorted_readers(vcf_readers):
    unsorted_readers = []
    for i, reader in enumerate(vcf_readers):
        logger.info("Checking sort order of [{}] ({}/{})",
                    reader.file_name,
                    i+1,
                    len(vcf_readers)
                    )
        previous_record = None
        reader.open()
        for vcf_record in reader.vcf_records():
            if previous_record and vcf_record < previous_record:
                logger.debug("VCF file:chrom:pos [{}:{}:{}] is out of order"
                             .format(reader.file_name,
                                     vcf_record.chrom,
                                     vcf_record.pos))
                unsorted_readers.append(reader)
                break
            else:
                previous_record = vcf_record
        reader.close()
    return unsorted_readers
Example #15
0
def _cleanup(temp_working_dir):
    if temp_working_dir and os.path.exists(temp_working_dir):
        logger.debug("Cleaning up tmp directory")
        shutil.rmtree(temp_working_dir)
Example #16
0
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
Example #17
0
def _cleanup(temp_working_dir):
    if temp_working_dir and os.path.exists(temp_working_dir):
        logger.debug("Cleaning up tmp directory")
        shutil.rmtree(temp_working_dir)
Example #18
0
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