ELILLM
August 4, 2025 ยท View on GitHub
A framework for performing explicit BO exploration in LLM latent space.
Environment Setup
We recommend using conda to manage the environment.
Step 1: Create environment from file
conda env create -f environment.yaml
conda activate your_env_name
Step 2: Download LLaMA 3.1 8B
Download the LLaMA 3.1 8B model manually from Meta's official release or Hugging Face (if available under their terms). Change the path setting in main file(e.g., elillm_diff.py)
# Loading Llama-3.1
checkpoint = "yourpath/Llama-3.1-8B-Instruct/"
Step3: Smina
Make sure smina is installed and accessible.
Then, set the path to the smina executable in tools/docking.py, e.g.:
if output:
launch_args = ['your_smina_path/smina', '-r', file_protein, '-l', file_output, '--autobox_ligand', file_lig_ref,
'--autobox_add', autobox_add, '--seed', seed, '--exhaustiveness', exhaustiveness, '-o', prefix + f'{name_protein}_result.pdb',
'--cpu', '30', '>>', smina_cmd_output]
else:
launch_args = ['your_smina_path/smina', '-r', file_protein, '-l', file_output, '--autobox_ligand', file_lig_ref,
'--autobox_add', autobox_add, '--seed', seed, '--exhaustiveness', exhaustiveness, '--cpu','30',
'>>', smina_cmd_output]
Data Preparation
We follow the data split and preprocessing protocol from TamGen, based on the CrossDocked2020 dataset.
We evaluate on the test set only. The training set is used solely to randomly sample 100 initial ligand molecules per target.
To reproduce our results, you can directly use the preprocessed data we provide:
- For ELILLM-rand, use data in: "results/rand/"
- For ELILLM-diff, use data in: "results/diff" The data for ELILLM-diff is constructed by re-evaluating the publicly available experimental results from ALIDIFF (https://github.com/MinkaiXu/AliDiff).
No additional preprocessing is required if using the above folders.
Custom Initialization (Optional)
If you wish to select your own initial molecules:
-
First, obtain the training and test splits following TamGen's instructions.
Note: we only provide the processed test set. -
Then, run the following script to select initial molecules:
python tools/select_init.py
Finally, compute docking scores for the selected molecules:
python init.py
Generation
To run molecule generation, simply call the corresponding Python script for each experimental setting.
For example:
python elillm_diff.py
or
python elillm_rand.py
Test
To analyze the generated results, run:
python test_crossdocked.py
Visualization
All figures in the paper can be reproduced using the Python scripts under the draw/ directory.