Caroline D. Rae

11 papers Misc 1Journal 6Unranked 4
YearRankTypeTitle / Venue / Authors
2024 J jnl
NeuroImage
Pavel Hok, Sebastian Strauss, James H. McAuley, Martin Domin, Audrey P. Wang, Caroline D. Rae, G. Lorimer Moseley, Martin Lotze
2021 J jnl
NeuroImage
Steve C. N. Hui, Mark Mikkelsen, Helge J. Zöllner, Vishwadeep Ahluwalia, Sarael Alcauter, Laima Baltusis, Deborah A. Barany, Laura R. Barlow, Robert Becker, Jeffrey I. Berman, Adam Berrington, Pallab K. Bhattacharyya, Jakob Udby Blicher, Wolfgang Bogner, Mark S. Brown, Vince D. Calhoun, Ryan Castillo, Kim M. Cecil, Richard A. E. Edden, Yeo Bi Choi, Winnie C. W. Chu, William T. Clarke, Alexander R. Craven, Koen Cuypers, Michael Dacko, Camilo de la Fuente-Sandoval, Patricia Desmond, Aleksandra Domagalik, Julien Dumont, Niall W. Duncan, Ulrike Dydak, Katherine Dyke, David A. Edmondson, Gabriele Ende, Lars Ersland, C. John Evans, Alan S. R. Fermin, Antonio Ferretti, Ariane Fillmer, Tao Gong, Ian Greenhouse, James T. Grist, Meng Gu, Ashley D. Harris, Katarzyna Hat, Stefanie Heba, Eva Heckova, John P. Hegarty, Kirstin-Friederike Heise, Shiori Honda, Aaron Jacobson, Jacobus F. A. Jansen, Christopher W. Jenkins, Stephen J. Johnston, Christoph Juchem, Alayar Kangarlu, Adam B. Kerr, Karl Landheer, Thomas Lange, Phil Lee, Swati Rane Levendovszky, Catherine Limperopoulos, Feng Liu, William Lloyd, David J. Lythgoe, Maro G. Machizawa, Erin L. MacMillan, Richard J. Maddock, Andrei V. Manzhurtsev, María L. Martinez-Gudino, Jack J. Miller, Heline Mirzakhanian, Marta Moreno-Ortega, Paul G. Mullins, Shinichiro Nakajima, Jamie Near, Ralph Noeske, Wibeke Nordhøy, Georg Oeltzschner, Raul Osorio-Duran, María Concepción García Otaduy, Erick H. Pasaye, Ronald Peeters, Scott J. Peltier, Ulrich Pilatus, Nenad Polomac, Eric C. Porges, Subechhya Pradhan, James Joseph Prisciandaro, Nicolaas A. Puts, Caroline D. Rae, Francisco Reyes-Madrigal, Timothy P. L. Roberts, Caroline E. Robertson, Jens T. Rosenberg, Diana-Georgiana Rotaru, Ruth L. O'Gorman Tuura, Muhammad G. Saleh, Kristian Sandberg, Ryan Sangill, Keith Schembri, Anouk Schrantee, Natalia A. Semenova, Debra Singel, Rouslan Sitnikov, Jolinda Smith, Yulu Song, Craig E. L. Stark, Diederick Stoffers, Stephan P. Swinnen, Rongwen Tain, Costin Tanase, Sofie Tapper, Martin Tegenthoff, Thomas Thiel, Marc Thioux, Peter Truong, Pim van Dijk, Nolan Vella, Rishma Vidyasagar, Andrej Vovk, Guangbin Wang, Lars T. Westlye, Timothy K. Wilbur, William R. Willoughby, Martin Wilson, Hans-Jörg Wittsack, Adam J. Woods, Yen-Chien Wu, Junqian Xu, Maria Yanez Lopez, David Ka Wai Yeung, Qun Zhao, Xiaopeng Zhou, Gasper Zupan
2018 J jnl
IEEE Trans. Medical Imaging
Ben Cassidy, F. DuBois Bowman, Caroline D. Rae, Victor Solo
2016 conf
ISBI
Ben Cassidy, Caroline D. Rae, Victor Solo
2015 J jnl
IEEE Trans. Medical Imaging
Ben Cassidy, Caroline D. Rae, Victor Solo
2015 conf
ISBI
Ben Cassidy, Caroline D. Rae, Victor Solo
2015 conf
EAPCogSci
Joanne Arciuli, Andrew Vakulin, Angela D'Rozario, Hannah Openshaw, David J. Stevens, Doug McEvoy, Keith Wong, Caroline D. Rae, Ron Grunstein
2013 conf
ISBI
Ben Cassidy, Victor Solo, Caroline D. Rae
2012 J jnl
IEEE Trans. Medical Imaging
Ben Cassidy, Christopher J. Long, Caroline D. Rae, Victor Solo
2011 Misc conf
ICASSP
Victor Solo, Ben Cassidy, Christopher J. Long, Caroline D. Rae
2010 J jnl
NeuroImage
SungWon Chung, Blandine Courcot, Michaël Sdika, Kristin Moffat, Caroline D. Rae, Roland G. Henry
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