Randi E. Foraker

31 papers Misc 8Journal 20Unranked 3
YearRankTypeTitle / Venue / Authors
2026 J jnl
npj Digit. Medicine
Salim Yakdan, Benjamin C. Warner, Zoher Ghogawala, Wilson Z. Ray, Mohamad Bydon, Michael P. Steinmetz, Richard T. Griffey, Randi E. Foraker, Adam Wilcox, Chenyang Lu, Jacob K. Greenberg
2025 J jnl
Frontiers Digit. Health
Maura M. Kepper, Callie Walsh-Bailey, Loni Parrish, Ainsley Mackenzie, Lisa M. Klesges, Peg Allen, Kia L. Davis, Randi E. Foraker, Ross C. Brownson
2025 J jnl
J. Am. Medical Informatics Assoc.
Levi Kaster, Ethan Hillis, Inez Y. Oh, Elizabeth C. Cordell, Randi E. Foraker, Albert M. Lai, Stephanie M. Morris, David H. Gutmann, Philip R. O. Payne, Aditi Gupta
2025 J jnl
J. Am. Medical Informatics Assoc.
Oliver J. Bear Don't Walk IV, Shefali Haldar, Duo Helen Wei, Hu Huang, Rebecca L. Rivera, Jungwei W. Fan, Vipina Kuttichi Keloth, Tiffany I. Leung, Pooja M. Desai, Diane M. Korngiebel, Lisa Grossman Liu, Adrienne Pichon, Vignesh Subbian, Anthony Solomonides, Laura K. Wiley, Omolola Ogunyemi, Gretchen P. Jackson, Irene Dankwa-Mullan, Lisa G. Dirks, Avery Rose Everhart, Andrea G. Parker, Bradley E. Iott, Clair A. Kronk, Randi E. Foraker, Krista G. Martin, Tara Anand, Salvatore G. Volpe, Nathan Yung, Rubina F. Rizvi, Robert Lucero, Tiffani J. Bright
2024 J jnl
J. Am. Medical Informatics Assoc.
Rachel M. Ancona, Benjamin P. Cooper, Randi E. Foraker, Taylor Kaser, Opeolu Adeoye, Kristen L. Mueller
2023 J jnl
J. Am. Medical Informatics Assoc.
Abigail E. Lewis, Nicole Gray Weiskopf, Zachary B. Abrams, Randi E. Foraker, Albert M. Lai, Philip R. O. Payne, Aditi Gupta
2023 J jnl
BMC Medical Informatics Decis. Mak.
Randi E. Foraker, Crystal Phommasathit, Kaleigh Clevenger, Clara Lee, Jessica Boateng, Napiera Shareef, Mary C. Politi
2022 J jnl
J. Am. Medical Informatics Assoc.
Jason A. Thomas, Randi E. Foraker, Noa Zamstein, Jon D. Morrow, Philip R. O. Payne, Adam B. Wilcox, Melissa A. Haendel, Christopher G. Chute, Kenneth R. Gersing, Anita Walden, Tellen D. Bennett, David A. Eichmann, Justin Guinney, Warren A. Kibbe, Hongfang Liu, Emily R. Pfaff, Peter N. Robinson, Joel H. Saltz, Heidi Spratt, Justin Starren, Christine Suver, Chunlei Wu, Davera Gabriel, Stephanie S. Hong, Kristin Kostka, Harold P. Lehmann, Richard A. Moffitt, Michele Morris, Matvey B. Palchuk, Xiaohan Tanner Zhang, Richard L. Zhu, Benjamin R. C. Amor, Mark M. Bissell, Marshall Clark, Andrew T. Girvin, Adam M. Lee, Robert T. Miller, Kellie M. Walters, Yooree Chae, Connor Cook, Alexandra Dest, Racquel R. Dietz, Thomas Dillon, Patricia A. Francis, Rafael Fuentes, Alexis Graves, Andrew J. Neumann, Shawn T. O'Neil, Usman Sheikh, Andréa M. Volz, Elizabeth Zampino, Christopher P. Austin, Samuel Bozzette, Mariam Deacy, Nicole Garbarini, Michael G. Kurilla, Sam G. Michael, Joni L. Rutter, Meredith Temple-O'Connor, Katie Rebecca Bradwell, Amin Manna, Nabeel Qureshi, Mary Morrison Saltz, Julie A. McMurry, Carolyn T. Bramante, Jeremy Richard Harper, Wenndy Hernandez, Farrukh M. Koraishy, Federico Mariona, Saidulu Mattapally, Amit Saha, Satyanarayana Vedula, Yujuan Fu, Nisha Mathews, Ofer Mendelevitch
2021 J jnl
BMC Medical Informatics Decis. Mak.
Fuhai Li, Andrew P. Michelson, Randi E. Foraker, Ming Zhan, Philip R. O. Payne
2021 Misc conf
AMIA
Adam B. Wilcox, Randi E. Foraker, Jason A. Thomas, Jon D. Morrow, Noa Zamstein
2021 J jnl
Frontiers Digit. Health
Maura M. Kepper, Callie Walsh-Bailey, Ross C. Brownson, Bethany M. Kwan, Elaine H. Morrato, Jane Garbutt, Lisa de las Fuentes, Russell E. Glasgow, Marcelo A. Lopetegui, Randi E. Foraker
2021 J jnl
BMC Medical Informatics Decis. Mak.
Jacob K. Greenberg, Ayodamola Otun, Azzah Nasraddin, Ross C. Brownson, Nathan Kuppermann, David D. Limbrick, Po-Yin Yen, Randi E. Foraker
2021 Misc conf
AMIA
Adam B. Wilcox, Noa Zamstein, Randi E. Foraker, Jason A. Thomas, Kenneth Wilkins, Jon D. Morrow
2021 J jnl
BMC Medical Informatics Decis. Mak.
Aixia Guo, Rahmatollah Beheshti, Yosef M. Khan, James R. Langabeer II, Randi E. Foraker
2021 Misc conf
AMIA
Noa Zamstein, Andrew J. Neumann, Randi E. Foraker, Jason A. Thomas, Adam B. Wilcox, Jon D. Morrow
2021 Misc conf
AMIA
Gagana Borra, Joshua M. Landman, Randi E. Foraker
2021 conf
BIBM
Raphael Poulain, Mehak Gupta, Randi E. Foraker, Rahmatollah Beheshti
2021 J jnl
BMC Medical Informatics Decis. Mak.
Aixia Guo, Kari A. Stephens, Yosef M. Khan, James R. Langabeer II, Randi E. Foraker
2020 J jnl
BMC Medical Informatics Decis. Mak.
Aixia Guo, Kathleen W. Zhang, Kristi Reynolds, Randi E. Foraker
2020 Misc conf
AMIA
Joshua M. Landman, Randi E. Foraker
2020 J jnl
Frontiers Digit. Health
Aixia Guo, Randi E. Foraker, Robert M. MacGregor, Faraz M. Masood, Brian P. Cupps, Michael K. Pasque
2020 J jnl
J. Am. Medical Informatics Assoc.
Thomas George Kannampallil, Randi E. Foraker, Albert M. Lai, Keith F. Woeltje, Philip R. O. Payne
2018 Misc conf
AMIA
Marjorie M. Kelley, Jennifer Kue, Lynne Brophy, Andrea Peabody, Po-Yin Yen, Randi E. Foraker, Sharon Tucker
2017 conf
CRI
Marjorie M. Kelley, Randi E. Foraker, En-Ju D. Lin, Manjusha Kulkarni, Maryam Lustberg, Kathryn E. Weaver
2016 J jnl
BMC Medical Informatics Decis. Mak.
Philip R. O. Payne, Yves A. Lussier, Randi E. Foraker, Peter J. Embí
2016 J jnl
J. Biomed. Informatics
Caryn Roth, Philip R. O. Payne, Rory C. Weier, Abigail B. Shoben, Erica N. Fletcher, Albert M. Lai, Marjorie M. Kelley, Jesse J. Plascak, Randi E. Foraker
2014 J jnl
BMC Medical Informatics Decis. Mak.
Caryn Roth, Randi E. Foraker, Philip R. O. Payne, Peter J. Embí
2014 J jnl
BMC Medical Informatics Decis. Mak.
Courtney Hebert, Chaitanya P. Shivade, Randi E. Foraker, Jared Wasserman, Caryn Roth, Hagop S. Mekhjian, Stanley Lemeshow, Peter J. Embí
2014 Misc conf
AMIA
Caryn Roth, Randi E. Foraker, Marcelo A. Lopetegui, Philip R. O. Payne
2013 conf
MedInfo
Caryn Roth, Chaitanya P. Shivade, Randi E. Foraker, Peter J. Embí
2012 Misc conf
AMIA
Courtney Hebert, Jared Wasserman, Randi E. Foraker, Stanley Lemeshow, Hagop S. Mekhjian, Philip R. O. Payne, Peter J. Embí
redb/extractor_registry.py
← Index redb/extractor_registry.py python
"""
Extractor registry with lazy loading by file type.

Groups extractors by file type (pe, elf, macho, apk) and only imports
the relevant group when that file type is first encountered. This avoids
loading heavy dependencies (pefile, lief, androguard, etc.) into workers
that don't need them.
"""
import importlib
import logging

logger = logging.getLogger(__name__)

# Registry: group name -> list of (module_path, class_names)
_REGISTRY = {
    "pe": [
        ("redb.extractors.pe_extractors", [
            "PEFeaturesExtractor",
            "PEImportExtractor",
            "PEResourceExtractor",
            "PEOverlayExtractor",
            "PESectionExtractor",
            "PESignatureExtractor",
            "PEExtraFindings",
            "PEInconstistencyTestsExtractor",
            "PEDotNetExtractor",
        ]),
    ],
    "elf": [
        ("redb.extractors.elf_extractors", [
            "ELFFeaturesExtractor",
            "ELFSegmentExtractor",
            "ELFSectionExtractor",
            "ELFDependencyExtractor",
            "ELFSymbolExtractor",
            "ELFImportExtractor",
            "ELFExportExtractor",
            "ELFRelocationExtractor",
            "ELFNotesExtractor",
        ]),
    ],
    "macho": [
        ("redb.extractors.macho_extractors", [
            "MachOFeaturesExtractor",
            "MachOSegmentExtractor",
            "MachOImportExtractor",
            "MachOExportExtractor",
            "MachODylibExtractor",
            "MachOSignatureExtractor",
        ]),
    ],
    "apk": [
        ("redb.extractors.apk_extractors", [
            "APKFeaturesExtractor",
            "APKManifestExtractor",
            "APKPermissionsExtractor",
            "APKSignatureExtractor",
            "APKDexExtractor",
            "APKResourceExtractor",
            "APKNativeLibExtractor",
            "APKInconsistencyTestsExtractor",
        ]),
        ("redb.extractors.decompiler.DecompileAPK", [
            "DecompileAPK",
        ]),
    ],
    "js": [
        ("redb.extractors.js_extractors", [
            "JSFeaturesExtractor",
            "JSSuspiciousAPIsExtractor",
            "JSStringsExtractor",
            "JSDeobfuscationExtractor",
            "JSContentExtractor",
        ]),
    ],
}

# Map filetype labels (from Magika) to registry group names
FILETYPE_TO_GROUP = {
    "pebin": "pe",
    "elf": "elf",
    "macho": "macho",
    "apk": "apk",
    "javascript": "js",
}

# Cache: group name -> {class_name: class}
_group_cache = {}


def _load_group(group_name):
    """Import all extractors for a group. Cached after first call."""
    if group_name in _group_cache:
        return _group_cache[group_name]

    logger.debug(f"Loading extractor group: {group_name}")

    # Suppress androguard logging before importing APK extractors
    if group_name == "apk":
        from loguru import logger as loguru_logger
        loguru_logger.disable("androguard")

    classes = {}
    for module_path, class_names in _REGISTRY[group_name]:
        mod = importlib.import_module(module_path)
        for name in class_names:
            classes[name] = getattr(mod, name)

    _group_cache[group_name] = classes
    return classes


def get_filetype_modules(filetype):
    """Get the list of format-specific extractor classes for a filetype.

    Returns only analysis extractors (excludes decompilers like DecompileAPK).
    """
    group = FILETYPE_TO_GROUP.get(filetype)
    if not group:
        return []
    classes = _load_group(group)
    return [cls for name, cls in classes.items() if not name.startswith("Decompile")]


def get_extractor_class(name):
    """Look up a single extractor class by name across all groups.

    Checks cached groups first, then loads groups on demand.
    """
    # Check already-loaded groups first
    for group_classes in _group_cache.values():
        if name in group_classes:
            return group_classes[name]

    # Search all groups (triggers lazy loading)
    for group_name in _REGISTRY:
        classes = _load_group(group_name)
        if name in classes:
            return classes[name]

    return None