Running ChemSTEP on CoreHPC
1. Source Environment
source /mnt/fac/CX900007_DS1/soft/chemstep/env.sh
2. Dock the Seed Set
Copy the .sdi file for the library you want to use into a directory containing your dockfiles:
| Library | Path |
|---|---|
| 22B | cp -r /mnt/fac/CX900007_DS1/work/kholland/22B_seed_building/sdi ./sdi
|
Then dock the seed set:
bash /mnt/fac/CX900007_DS1/soft/super_dock3r.sh
3. Gather Scores for the Seed Set
Once docking is complete, run the following from the directory one level above your docking output (MOLECULES_DIR_TO_BIND).
22B library:
python python $CHEMSTEP_INSTALL_PATH/chemstep-development/accessory/get_scores.py 0
Verify that scores_round_0.txt was correctly written:
wc -l scores_round_0.txt
4. Convert Scores to .npy Files
Convert scores to ChemSTEP-readable .npy files:
python $CHEMSTEP_INSTALL_PATH/chemstep-development/accessory/convert_scores_to_npy.py 0 CSLB
5. Set Up the ChemSTEP Run Directory
Create and enter a new run directory, then copy in the necessary files:
mkdir chemstep_run cd chemstep_run chemstep-run-new
This will populate the directory with params.txt, run_chemstep.py, and launch_chemstep_as_job.sh.
Optional: Integrated IFP
If running with integrated IFP for beacon selection, also run:
chemstep-run-ifp
This copies in the additional files ifp_acceptance_criteria.txt and interactions.txt.
6. Edit params.txt
Add the absolute paths to the ChemSTEP-readable score and indices .npy arrays generated in Step 4.
seed_indices_file: /path/to/your/indices_round_0.npy seed_scores_file: /path/to/your/scores_round_0.npy hit_pprop: 5.5 n_docked_per_round: 2000000 bundle_size: 1000 max_beacons: 100 max_n_rounds: 250
Parameter Reference
| Parameter | Description |
|---|---|
hit_pprop |
Defines a "virtual hit." pProp = −log(rank%) within the total library score distribution. E.g., pProp 4 in 13B space ≈ top 0.01% (~1.3M molecules); pProp 5 ≈ 0.001% (~132K). The seed set should contain at least 10(pProp+2) molecules. |
n_docked_per_round |
Number of molecules prioritized per round. All must be built and docked between rounds. Too many slows throughput and may reduce diversity; too few slows virtual hit recovery. Recommended: 1-2 million |
max_beacons |
Diverse, well-scoring molecules used to guide prioritization. All molecules above the pProp threshold are candidates. Too many reduce inter-beacon diversity; too few hinder space exploration. Fewer beacons than specified may be assigned if an insufficient number of molecules clear the threshold. Recommended: 100 |
bundle_size |
In auto docking mode, number of molecules submitted as a single build job. |
max_n_rounds |
No adjustment needed when running ChemSTEP prospectively as described here. |
7. Edit run_chemstep.py
Note: All paths must be absolute paths.
Required Settings
Set lib_path to the library pickle for your library:
| Library | Path |
|---|---|
| 22B | /mnt/fac/CX900007_DS1/work/kholland/22B_fp_lib/22B_fplib.pickle
|
lib_path = '/full/path/to/library.pickle'
Set dockfiles_path:
dockfiles_path="/full/path/to/dockfiles"
Optional: minTD Exclusion Zone
Molecules will not be prioritized from within a specified Tanimoto distance of beacons. Comment in the relevant lines and update the value. Consider also setting enforce_n_docked_per_round = True when using this option:
min_td_search=0.5, enforce_n_docked_per_round=True,
Optional: Integrated IFP
Only selects beacons that satisfy user-defined interaction criteria. Comment in the following lines and update the paths to the necessary files (copied in Step 5 if you ran chemstep-run-ifp):
use_IFP=True, ifp_pdb_path='/full/path/to/rec.crg.pdb', interactions_file='/full/path/to/interactions.txt', ifp_acceptance_criteria_file='/full/path/to/ifp_acceptance_criteria.txt',
interactions.txt — one interaction per line, comma-separated. Format: interaction_type, residue_name_and_number. Example:
Hydrogen bond, GLY-19 Ionic, ASP-149
Supported interaction types include: Proximal, Hydrogen bond, Ionic, Cation-pi, Hydrophobic, Halogen bond, and others. See LUNA and IFP documentation for the full list.
ifp_acceptance_criteria.txt — defines the number of unsatisfied donors/acceptors/specific interactions required for a molecule to pass IFP and be considered for beacon selection. Example:
#_donors #_acceptors #_unstatisfied_donors == 0 #_unstatisfied_acceptors <= 4 Ionic/ASP-149 > 0
Optional: SMARTS exclusion filter
Integrated SMARTS filer can exclude problematic chemotypes from being built, docked, or selected as beacons. Multiple SMARTS patterns are tolerated. Comment in the following line in run_chemstep.py:
filter_smarts=['n1cncnc1', 'c1cccnc1[SH]']
TRIAZINES: 'n1cncnc1'
Example: AmpC on 22B with minTD=0.50, No IFP
lib_path = '/wynton/group/bks/work/shared/kholland/chemstep_auto_v04/scripts/libraries/22B/22B_fplib.pickle'
lib = load_library_from_pickle(lib_path)
algo = CSAlgo(lib, 'params.txt', 'output', 16, verbose=True,
scheduler='sge', smi_id_prefix='CSLB',
python_exec="/wynton/group/bks/work/shared/kholland/chemstep_auto_v04/bin/python",
dockfiles_path="/wynton/group/bks/work/kholland/chemstep_ampc_22B/seed_docking/dockfiles",
min_td_search=0.5,
enforce_n_docked_per_round=True,
#use_IFP=True,
#ifp_pdb_path='/path/to/your/reference/rec.crg.pdb',
#interactions_file='/path/to/your/interactions.txt',
#ifp_acceptance_criteria_file='/path/to/your/ifp_acceptance_criteria.txt',
docking_method="auto", track_beacon_orig=True)
8. Launch the Job
Submit the main ChemSTEP job:
sbatch launch_chemstep_as_job.sh
9. Monitor Job Status
Check job status with squeue -u USER_ID. The main job will run for up to 6 days given no errors. ChemSTEP will launch search, building, and docking jobs in successive rounds.
Note: If any building or docking subjobs hang, the main job will not proceed until those are canceled or finished. Monitor job statuses regularly and occasionally verify that docking output files (scores_round_*.txt) are being populated.