Ian T. Paulsen

16 papers A 1Journal 15
YearRankTypeTitle / Venue / Authors
2017 J jnl
Nucleic Acids Res.
Ingrid M. Keseler, Amanda Mackie, Alberto Santos-Zavaleta, Richard Billington, César Bonavides-Martínez, Ron Caspi, Carol A. Fulcher, Socorro Gama-Castro, Anamika Kothari, Markus Krummenacker, Mario Latendresse, Luis Muñiz-Rascado, Quang Ong, Suzanne M. Paley, Martín Peralta-Gil, Pallavi Subhraveti, David A. Velázquez-Ramírez, Daniel S. Weaver, Julio Collado-Vides, Ian T. Paulsen, Peter D. Karp
2017 J jnl
Nucleic Acids Res.
Liam D. H. Elbourne, Sasha G. Tetu, Karl A. Hassan, Ian T. Paulsen
2014 J jnl
BMC Syst. Biol.
Daniel S. Weaver, Ingrid M. Keseler, Amanda Mackie, Ian T. Paulsen, Peter D. Karp
2013 J jnl
Nucleic Acids Res.
Ingrid M. Keseler, Amanda Mackie, Martín Peralta-Gil, Alberto Santos-Zavaleta, Socorro Gama-Castro, César Bonavides-Martínez, Carol A. Fulcher, Araceli M. Huerta, Anamika Kothari, Markus Krummenacker, Mario Latendresse, Luis Muñiz-Rascado, Quang Ong, Suzanne M. Paley, Imke Schröder, Alexander Glennon Shearer, Pallavi Subhraveti, Michael Travers, Deepika Weerasinghe, Verena Weiss, Julio Collado-Vides, Robert P. Gunsalus, Ian T. Paulsen, Peter D. Karp
2011 J jnl
Nucleic Acids Res.
Ingrid M. Keseler, Julio Collado-Vides, Alberto Santos-Zavaleta, Martín Peralta-Gil, Socorro Gama-Castro, Luis Muñiz-Rascado, César Bonavides-Martínez, Suzanne M. Paley, Markus Krummenacker, Tomer Altman, Pallavi Kaipa, Aaron Spaulding, John Pacheco, Mario Latendresse, Carol A. Fulcher, Malabika Sarker, Alexander Glennon Shearer, Amanda Mackie, Ian T. Paulsen, Robert P. Gunsalus, Peter D. Karp
2010 J jnl
Briefings Bioinform.
Peter D. Karp, Suzanne M. Paley, Markus Krummenacker, Mario Latendresse, Joseph M. Dale, Thomas J. Lee, Pallavi Kaipa, Fred Gilham, Aaron Spaulding, Liviu Popescu, Tomer Altman, Ian T. Paulsen, Ingrid M. Keseler, Ron Caspi
2009 J jnl
Nucleic Acids Res.
Ingrid M. Keseler, César Bonavides-Martínez, Julio Collado-Vides, Socorro Gama-Castro, Robert P. Gunsalus, D. Aaron Johnson, Markus Krummenacker, Laura M. Nolan, Suzanne M. Paley, Ian T. Paulsen, Martín Peralta-Gil, Alberto D. Santos-Zavaleta, Alexander Glennon Shearer, Peter D. Karp
2008 A conf
ISMB
Thomas J. Lee, Ian T. Paulsen, Peter D. Karp
2007 J jnl
Nucleic Acids Res.
Qinghu Ren, Kaixi Chen, Ian T. Paulsen
2005 J jnl
PLoS Comput. Biol.
Qinghu Ren, Ian T. Paulsen
2005 J jnl
Nucleic Acids Res.
Ingrid M. Keseler, Julio Collado-Vides, Socorro Gama-Castro, John Ingraham, Suzanne M. Paley, Ian T. Paulsen, Martín Peralta-Gil, Peter D. Karp
2004 J jnl
Nucleic Acids Res.
Qinghu Ren, Katherine H. Kang, Ian T. Paulsen
2003 J jnl
Nucleic Acids Res.
Jessica C. Kissinger, Bindu Gajria, Li Li, Ian T. Paulsen, David S. Roos
2002 J jnl
Nucleic Acids Res.
Peter D. Karp, Monica Riley, Milton H. Saier Jr., Ian T. Paulsen, Julio Collado-Vides, Suzanne M. Paley, Alida Pellegrini-Toole, César Bonavides-Martínez, Socorro Gama-Castro
2001 J jnl
Nucleic Acids Res.
Daniel H. Haft, Brendan J. Loftus, Delwood L. Richardson, Fan Yang, Jonathan A. Eisen, Ian T. Paulsen, Owen White
2000 J jnl
Nucleic Acids Res.
Peter D. Karp, Monica Riley, Milton H. Saier Jr., Ian T. Paulsen, Suzanne M. Paley, Alida Pellegrini-Toole
redb/logging_utils.py
← Index redb/logging_utils.py python
"""
Logging utilities and shared enums for REDB.

Contains the ImportResult enum, log formatters, and logger setup functions
used across the ingestor pipeline.
"""
import logging
from logging.handlers import QueueHandler
import os
from enum import Enum


class ImportResult(Enum):
    CORRECTLY = 0
    PARTIALLY = 1
    FAILED = 2
    PENDING = 3
    SKIPPED = 4


class FileNameFormatter(logging.Formatter):
    def format(self, record):
        record.filenameinfo = getattr(record, "filenameinfo", "unknown")
        return super().format(record)


def setup_logger(log_queue, filename):
    logger = logging.getLogger(filename)
    if not logger.handlers:
        if os.getenv("SERVER_ENV") == "prod":
            logger.setLevel(logging.INFO)
        else:
            logger.setLevel(logging.DEBUG)
        handler = QueueHandler(log_queue)
        logger.addHandler(handler)
        logger.propagate = False  # Prevent propagation to parent loggers
    return logger


def logger_thread(log_queue, log_file):
    handler = logging.FileHandler(log_file)
    formatter = FileNameFormatter(
        "%(asctime)s - %(filenameinfo)s - %(levelname)s - %(message)s"
    )
    handler.setFormatter(formatter)

    while True:
        try:
            record = log_queue.get()
            if record is None:
                break
            # Format and write the log record
            message = formatter.format(record)
            handler.stream.write(message + "\n")
            handler.stream.flush()
        except Exception:
            import traceback
            import sys

            print("[ERR] Error in logger thread:", file=sys.stderr)
            traceback.print_exc(file=sys.stderr)


def setup_direct_logger(log_file, filename, pid=None):
    """Setup a logger that writes directly to the log file without using a queue."""
    # Create a unique logger name using the process ID
    logger_name = f"{filename}_{pid}" if pid else filename
    logger = logging.getLogger(logger_name)

    if not logger.handlers:
        handler = logging.FileHandler(log_file)
        formatter = logging.Formatter("%(asctime)s - %(filenameinfo)s - %(levelname)s - %(message)s")
        handler.setFormatter(formatter)
        logger.addHandler(handler)

        if os.getenv("SERVER_ENV") == "prod":
            logger.setLevel(logging.INFO)
        else:
            logger.setLevel(logging.DEBUG)

    # Add filename info to the logger's extra info
    extra = {"filenameinfo": filename}
    logger = logging.LoggerAdapter(logger, extra)

    return logger