HALO: Interactive Co-abductive Reasoning in Hypothesis Generation for Scientific Discovery
Youngseung Jeon, Kat Limqueco, JiaSyuan Chang, Xiang 'Anthony' Chen
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
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.
Install uv, then install HALO from the repository root:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv syncuv sync creates the project environment and installs its dependencies. Local molecular calculations need no 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
uv run halo serveSign 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"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
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.
- Overview
- Molecular tools
- Models and prediction
- Agents and workflows
- Context and persistence
- API and command-line reference
Start with the project example for a complete generation and research workflow.
@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}
}