Skip to content
katjpgPublic

About

HALO - interactive human-AI co-abduction for developing molecular design hypotheses

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

HALO

HALO: Interactive Co-abductive Reasoning in Hypothesis Generation for Scientific Discovery

Youngseung Jeon, Kat Limqueco, JiaSyuan Chang, Xiang 'Anthony' Chen

UIST 2026 paper · arXiv

Overview

Molecular lead optimization requires medicinal chemists to navigate a vast search space while balancing competing property objectives. Although generative models can propose novel molecular analogs, evaluating trade-offs and deciding which structural modifications to pursue remain challenging.

We introduce HALO, an interactive system that supports human–AI co-abductive reasoning in molecular hypothesis generation. HALO helps chemists (1) compare generated analogs across competing property objectives, (2) discover molecular editing strategies from recurring structural and property relationships, and (3) synthesize and refine these strategies into new molecular hypotheses.

In a study with 10 medicinal chemists, submitted molecules improved an average of 3.16 of four target properties with HALO, compared with 2.25 using a baseline with the same generative model. Improvements were evaluated using ADMET property predictions, and HALO submissions also exhibited lower pairwise structural similarity, indicating greater structural diversity. Study methods and results

The research interface groups analogs by predicted property changes, identifies fragment edits within each group, and combines edits across groups to propose new structures.

This repository provides the Python backend for molecular design and research workflows. halo.chem provides local profiling, editing, drawing, and comparison. HALOChem connects to a service for analog generation, scientific evidence retrieval, and saved projects and decisions.

Installation

Install uv, then install HALO from the repository root:

curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync

uv sync creates the project environment and installs its dependencies. Local molecular calculations need no API credentials.

API credentials

To run the agent workflows, create an OpenAI API key and a Supabase project. Apply HALO's database schema, then set the service credentials:

export OPENAI_API_KEY="your-openai-api-key"
export SUPABASE_URL="https://your-project.supabase.co"
export SUPABASE_PUBLISHABLE_KEY="your-supabase-publishable-key"
export SUPABASE_SECRET_KEY="your-supabase-secret-key"

The service also reads these settings from .env. Find the Supabase URL and keys in the project dashboard. Keep SUPABASE_SECRET_KEY on the server.

For direct Semantic Scholar searches, set its key and pass it as the api_key argument to SemanticScholarClient:

export SEMANTIC_SCHOLAR_API_KEY="your-semantic-scholar-api-key"

Semantic Scholar API access · Client example

The default research workflow uses ChEMBL, PubChem, and Europe PMC without API keys. For a custom model endpoint, set OPENAI_BASE_URL. Model configuration

Start the service

uv run halo serve

Sign in as a Supabase Auth user in the same project, then export the returned response.session.access_token in the shell running your client:

export HALO_ACCESS_TOKEN="your-supabase-user-access-token"

Supabase sign-in

Quickstart

Profile a molecule locally

Run Python with uv run python. Calculate a profile and inspect its molecular weight in g/mol:

from halo import chem

profile = chem.profile_molecule("CCO")
print(f"{profile.descriptors.molecular_weight_g_mol:.2f} g/mol")
46.07 g/mol

Generate analogs in a project

With the service running and the user token exported, create a project and request changes from its lead:

from os import environ

from halo import HALOChem

with HALOChem(
    base_url="http://localhost:8000",
    access_token=environ["HALO_ACCESS_TOKEN"],
) as halo:
    project = halo.projects.create(source_smiles="COc1ccc(F)cc1")
    run = project.generate_analogs(
        criteria={"solubility": "increase", "herg": "decrease"},
        n=4,
    )
    print(run)

The saved run shows verified candidates, prediction changes from the source, and individual goal outcomes. Continue with the project tutorial to select a parent and retrieve papers and patents.

For command-line usage, start with uv run halo --help or the CLI reference.

Documentation

  1. Overview
  2. Molecular tools
  3. Models and prediction
  4. Agents and workflows
  5. Context and persistence
  6. API and command-line reference

Start with the project example for a complete generation and research workflow.

Citation

@inproceedings{jeon2026halo,
  title={{HALO}: Interactive Co-abductive Reasoning in Hypothesis Generation for Scientific Discovery},
  author={Jeon, Youngseung and Limqueco, Kat and Chang, JiaSyuan and Chen, Xiang 'Anthony'},
  booktitle={Proceedings of the 39th Annual ACM Symposium on User Interface Software and Technology},
  pages={1--20},
  year={2026},
  doi={10.1145/3830398.3830566}
}

License

BSD-3-Clause

About

HALO - interactive human-AI co-abduction for developing molecular design hypotheses

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages