Jointly optimize the sequence and structure of a protein-ligand binding pose with iterative selection-expansion.
To run NISE, install the conda environment for LASErMPNN and and one which contains Boltz-1x:
-
Install LASErMPNN conda environment
-
Install ProDy from source into lasermpnn conda environment. There is currently an issue with the conda installable ProDy and distance-based selections which are used within NISE. This can be resolved for now by installing ProDy from source.
Just follow this set of commands inside the NISE project directory after git clone
-ing the project and installing the lasermpnn environment.
conda activate lasermpnn
git clone [email protected]:prody/ProDy.git
cd ProDy
python setup.py build_ext --inplace --force
pip install -Ue .
cd ..
tar -xvf hetdict.tar.gz
- Activate your conda environment containing Boltz-1x and run
which boltz
to get the path to the executable you call when runningboltz predict
commands. You will need to update this path inrun_nise_boltz.py
-
Create a PDB file containing your PROTONATED input ligand with CONECT records encoding bonds: If you have a non-protonated ligand/are missing conect records, run
protonate_and_add_conect_records.py {input_path}.pdb {smiles_string} {output_path}.pdb
. WARNING: This will rename the ligand atoms, ligand chain, and resnum. -
[Optional] If you want to protonate using reduce (keeps added ligand hydrogen names consistent with input, a bit more finicky than the alternative RDKit), Inject your ligand into REDUCE hetdict by running
inject_ligand_into_hetdict.py {output_path}.pdb
-
Create an input directory with a subfolder called input_backbones. Ex:
./debug/input_backbones/
. -
Update the params dictionary at the bottom of
./run_nise_boltz.py
with the path to your new input dir ex: (input_dir = Path('./debug/')
). -
Update burial and RMSD atom sets and smiles string in
./run_nise_boltz.py
-
Update
boltz1x_executable_path
at bottom of./run_nise_boltz.py
To test out an example run:
# Protonated smiles string from ChemDraw.
./protonate_and_add_conect_records.py ./example_pdbs/16_pose26_en_-5p044_no_CG_top1_of_1_n4_00374_looped_master_6_gly_0001_trim_H_98.pdb "CC[C@]1(O)C2=C(C(N3CC4=C5[C@@H]([NH3+])CCC6=C5C(N=C4C3=C2)=CC(F)=C6C)=O)COC1=O" ./example_pdbs/test_input_protonated_conect.pdb
mkdir -p ./debug/input_backbones/
cp ./example_pdbs/test_input_protonated_conect.pdb ./debug/input_backbones/
./run_nise_boltz.py