Skip to content

About

NOVA: An agentic framework for automated histopathology analysis and discovery

Resources

Code of conduct

Security policy

Stars

32 stars

Watchers

2 watching

Forks

Repository files navigation

NOVA

arXiv | Getting Started | Cite | License

NOVA is a modular agentic framework, based on CodeAct and developed using smolagents, that dynamically generates and executes Python code to orchestrate tool usage and answer user queries for scalable computational analysis. NOVA integrates 49 domain-specific tools (e.g., nuclei segmentation, whole-slide encoding) built on open-source software, and can also create new tools ad hoc.

Image

SlideQuest

To evaluate NOVA's capabilities, we introduce SlideQuest, a benchmark of 90 questions designed to evaluate computational agents in pathology. The tasks span four categories, including pyramidal data interrogation (DataQA), cellular analysis (CellularQA), histology ROI understanding (PatchQA), and gigapixel slide-level experimentation (SlideQA).

Image

Getting started

Installation

First clone the repository:

git clone https://github.com/microsoft/nova-agent.git
cd nova-agent

This repository uses mise-en-place for dev environment setup. Run the following make and just commands to install and set up the environment:

make mise  ## install mise and necessary tools (just, uv, python, etc)
just env  ## setup the environment

make mise will install necessary tools including just, uv, etc. You can check the Makefile and Justfile for more details on what these recipes run.

The environment is built with uv for fast virtual environment management.

Setup your LLM api

Modify configs/llms/default_llm.yaml to set your LLM API base URL. You can also override the base URL at runtime using the command line argument baseline.llm.api_config.base_url.

Known Issues

NOVA relies on Hover-net for cell segmentation which is setup as a git submodule in this repository.

You may encounter the following error when ruuning queries that require multiprocessing:

ERROR: ctypes objects containing pointers cannot be pickled

This is due to the change of multiprocessing strategy to spawn in Hover-net. To fix this error, remove or comment mp.set_start_method("spawn", True) in infer/wsi.py and infer/tile.py in hovernet.

Run NOVA for exploration

If you wish to run NOVA in exploration mode using gradio capabilities provided by smolagents, run the following command:

uv add smolagents[gradio]
uv run python src/nova/main.py baseline.llm.api_config.base_url=<your_base_url>

This will launch a Gradio interface for interactive exploration of NOVA's capabilities. You will be able to visualize and interact with the various tools and agents integrated within NOVA described on the left of the interface.

Run NOVA on SlideQuest

We provide a custom benchmark runner for SlideQuest. To run nova on SlideQuest, use the following command:

uv run python src/nova/experiments/run_experiment.py \
    --config-name experiments/codeagent_with_tools \
    run.subfolder_working_dir=True \
    baseline.llm.api_config.deployment_name=gpt-4.1 \
    baseline.llm.api_config.base_url=<your_base_url> \
    categories=[data_qa] \
    benchmark.limit=2

Explore the config codeagent_with_tools for more details on what options are available.

Debugging NOVA on SlideQuest

We provide a debugging config in .vscode/launch.json to facilitate debugging experiments. This will allow you to step through the code and inspect variables during execution in case you encounter any issues.

Reference

We kindly request that you cite our paper if any part of this code is used in your work.

@misc{vaidya2025novaagenticframeworkautomated,
      title={NOVA: An Agentic Framework for Automated Histopathology Analysis and Discovery},
      author={Anurag J. Vaidya and Felix Meissen and Daniel C. Castro and Shruthi Bannur and Tristan Lazard and Drew F. K. Williamson and Faisal Mahmood and Javier Alvarez-Valle and Stephanie L. Hyland and Kenza Bouzid},
      year={2025},
      eprint={2511.11324},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2511.11324},
}

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

About

NOVA: An agentic framework for automated histopathology analysis and discovery

Resources

Code of conduct

Security policy

Stars

32 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages