<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.docking.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zack</id>
	<title>DISI - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.docking.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zack"/>
	<link rel="alternate" type="text/html" href="http://wiki.docking.org/index.php?title=Special:Contributions/Zack"/>
	<updated>2026-05-23T12:24:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>http://wiki.docking.org/index.php?title=Zack_useful_snippets&amp;diff=17241</id>
		<title>Zack useful snippets</title>
		<link rel="alternate" type="text/html" href="http://wiki.docking.org/index.php?title=Zack_useful_snippets&amp;diff=17241"/>
		<updated>2026-05-06T03:40:31Z</updated>

		<summary type="html">&lt;p&gt;Zack: Useful DOCK3.8 binaries&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are small tidbits of info collected over time that are too unpolished for their own page, but useful enough for someone at some point, maybe. They may not be fully reliable.&lt;br /&gt;
&lt;br /&gt;
==DB2 to MOL2==&lt;br /&gt;
&lt;br /&gt;
Use the following python2 script:&lt;br /&gt;
&lt;br /&gt;
 /nfs/home/zack/software/zack_bks_scripts/db2_to_mol2/db2_to_mol2.py&lt;br /&gt;
&lt;br /&gt;
==MOL2 to DB2==&lt;br /&gt;
&lt;br /&gt;
The Docker image lives on epyc:&lt;br /&gt;
&lt;br /&gt;
 (pydock_env) [zack@epyc building_single_mol2]$ docker images | grep building&lt;br /&gt;
 building_single_mol2          latest            cdadaf7a2ffc   6 minutes ago   3.94GB&lt;br /&gt;
&lt;br /&gt;
The script to use is at:&lt;br /&gt;
&lt;br /&gt;
 ~/software/zack_bks_scripts/build_single_pose.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Usage: build_single_pose.sh &amp;lt;input.mol2&amp;gt; &amp;lt;output_dir&amp;gt; [pose_name]&lt;br /&gt;
#&lt;br /&gt;
# Builds a single-conformer DB2 from a mol2 pose.&lt;br /&gt;
# Output: &amp;lt;output_dir&amp;gt;/bundle.db2.tgz  (contains &amp;lt;pose_name&amp;gt;.&amp;lt;charge&amp;gt;.db2)&lt;br /&gt;
&lt;br /&gt;
set -euo pipefail&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$#&amp;quot; -lt 2 ] || [ &amp;quot;$#&amp;quot; -gt 3 ]; then&lt;br /&gt;
    echo &amp;quot;Usage: $0 &amp;lt;input.mol2&amp;gt; &amp;lt;output_dir&amp;gt; [pose_name]&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
INPUT_MOL2=$(realpath &amp;quot;$1&amp;quot;)&lt;br /&gt;
OUTPUT_DIR=$(realpath &amp;quot;$2&amp;quot;)&lt;br /&gt;
POSE_NAME=&amp;quot;${3:-}&amp;quot;   # optional; derived from mol2 name if blank&lt;br /&gt;
&lt;br /&gt;
if [ ! -f &amp;quot;$INPUT_MOL2&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Error: input mol2 not found: $INPUT_MOL2&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
mkdir -p &amp;quot;$OUTPUT_DIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Stage input into a work dir the container will see as /data&lt;br /&gt;
WORKDIR=$(mktemp -d /tmp/pose_work_XXXXXX)&lt;br /&gt;
chmod 777 &amp;quot;$WORKDIR&amp;quot;&lt;br /&gt;
trap &amp;quot;rm -rf $WORKDIR&amp;quot; EXIT&lt;br /&gt;
&lt;br /&gt;
cp &amp;quot;$INPUT_MOL2&amp;quot; &amp;quot;$WORKDIR/input.mol2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Scratch dir for the container&#039;s /tmp&lt;br /&gt;
SCRATCH=$(mktemp -d /tmp/pose_scratch_XXXXXX)&lt;br /&gt;
chmod 777 &amp;quot;$SCRATCH&amp;quot;&lt;br /&gt;
trap &amp;quot;rm -rf $WORKDIR $SCRATCH&amp;quot; EXIT&lt;br /&gt;
&lt;br /&gt;
docker run --rm \&lt;br /&gt;
    -u &amp;quot;$(id -u):$(id -g)&amp;quot; \&lt;br /&gt;
    -v &amp;quot;$WORKDIR:/data&amp;quot; \&lt;br /&gt;
    -v &amp;quot;$SCRATCH:/tmp&amp;quot; \&lt;br /&gt;
    -e POSE_NAME=&amp;quot;$POSE_NAME&amp;quot; \&lt;br /&gt;
    building_single_mol2 \&lt;br /&gt;
    bash -c &amp;quot;source /pyenv/bin/activate &amp;amp;&amp;amp; cd /tmp &amp;amp;&amp;amp; python /build_single_pose.py&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Move the result to the requested output dir&lt;br /&gt;
if [ ! -f &amp;quot;$WORKDIR/bundle.db2.tgz&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Error: build failed — no bundle.db2.tgz produced&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
mv &amp;quot;$WORKDIR/bundle.db2.tgz&amp;quot; &amp;quot;$OUTPUT_DIR/bundle.db2.tgz&amp;quot;&lt;br /&gt;
echo &amp;quot;Done: $OUTPUT_DIR/bundle.db2.tgz&amp;quot;&lt;br /&gt;
tar -tzf &amp;quot;$OUTPUT_DIR/bundle.db2.tgz&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# auto-derive pose name from the input mol2&lt;br /&gt;
./build_single_pose.sh xtal-lig_4mer_round2.mol2 /path/to/output&lt;br /&gt;
&lt;br /&gt;
# or override the pose name explicitly&lt;br /&gt;
./build_single_pose.sh xtal-lig_4mer_round2.mol2 /path/to/output 4mer_WT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure the final bundle is in the format:&lt;br /&gt;
&lt;br /&gt;
 bundle.db2.tgz/{LIG_NAME}.dock.db2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Alternative method&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This approach runs on n-1-21 but has not been fully verified:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# on n-1-21&lt;br /&gt;
conda deactivate&lt;br /&gt;
source /nfs/soft/dock/versions/dock37/DOCK-3.7.5.0/env.sh&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
$DOCKBASE/ligand/generate/build_ligand.sh xtal-lig_4mer_round2.mol2 \&lt;br /&gt;
  --name=&amp;quot;4MER&amp;quot; \&lt;br /&gt;
  --smiles=&amp;quot;NC(=[NH2+])NCCC[C@H](NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@@H](N)CO)C(=O)NCCC(N)=O&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Last step will break. Exit out of n-1-21.&lt;br /&gt;
conda deactivate&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
source /nfs/soft/dock/versions/dock385/env.sh&lt;br /&gt;
&lt;br /&gt;
# Go back to the dir and re-run:&lt;br /&gt;
$DOCKBASE/ligand/generate/build_ligand.sh xtal-lig_4mer_round2.mol2 \&lt;br /&gt;
  --name=&amp;quot;4MER&amp;quot; \&lt;br /&gt;
  --smiles=&amp;quot;NC(=[NH2+])NCCC[C@H](NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@@H](N)CO)C(=O)NCCC(N)=O&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# It should error out earlier, but package the results into db2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, make sure the final bundle is in the format:&lt;br /&gt;
&lt;br /&gt;
 bundle.db2.tgz/{LIG_NAME}.dock.db2&lt;br /&gt;
&lt;br /&gt;
==Scoring a Single MOL2==&lt;br /&gt;
&lt;br /&gt;
Based on the [https://wiki.docking.org/index.php?title=Rescoring_with_DOCK_3.7 Rescoring with DOCK 3.7] wiki page, specifically using &amp;lt;code&amp;gt;rescoring.tar.gz&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Run the following steps in order on n-1-21:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set up environment&lt;br /&gt;
conda deactivate&lt;br /&gt;
source /nfs/soft/dock/versions/dock385/env.sh&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
source /nfs/soft/dock/versions/dock37/DOCK-3.7.5.0/env.sh&lt;br /&gt;
&lt;br /&gt;
cp -r /nfs/home/zack/software/zack_bks_scripts/pose_build_and_rescore_dock3/ ./&lt;br /&gt;
python convert_anyMol2_to_dockMol2.py {YOUR_MOL2} {DOCKABLE_MOL2} {LIG_NAME}&lt;br /&gt;
csh 1.run.rescore_prep.csh {DOCKABLE_MOL2}&lt;br /&gt;
&lt;br /&gt;
# There should now be: poses.mol2.gz, amsol.txt.gz, vdw.txt.gz&lt;br /&gt;
# The dock binary included is for convenience only&lt;br /&gt;
# INDOCK has search_type and other fields that point to the built pose&lt;br /&gt;
./dock64 INDOCK &amp;gt; OUTDOCK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Environment for AMSOL==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda deactivate&lt;br /&gt;
source /nfs/soft/dock/versions/dock385/env.sh&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
source /nfs/soft/dock/versions/dock37/DOCK-3.7.5.0/env.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generating More Conformers in Ligand Building==&lt;br /&gt;
&lt;br /&gt;
A new Docker image &amp;lt;code&amp;gt;building_configurable_omega&amp;lt;/code&amp;gt; was created to expose OMEGA tuning parameters as environment variables. Only epyc has this image. It also prints the number of conformers saved into db2 in the log.&lt;br /&gt;
&lt;br /&gt;
Example SLURM script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --output=active_building/logs/slurm-%A_%a.out&lt;br /&gt;
#SBATCH --array=1-2&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
#SBATCH --mem=2500M&lt;br /&gt;
#SBATCH --nodelist=epyc&lt;br /&gt;
&lt;br /&gt;
TMPDIR=$(mktemp -d /scratch/job_${SLURM_JOB_ID}_${SLURM_ARRAY_TASK_ID}_XXXXXX)&lt;br /&gt;
trap &amp;quot;rm -rf $TMPDIR&amp;quot; EXIT&lt;br /&gt;
export INDIR=&amp;quot;/mnt/nfs/exk/work/zack/npsr1/UCSF_DOCK/setup_prep/round2/decoys/built_decoys/active_building/${SLURM_ARRAY_TASK_ID}&amp;quot;&lt;br /&gt;
newgrp docker &amp;lt;&amp;lt; EOF&lt;br /&gt;
docker run --rm -u $(id -u):$(id -g) -v ${INDIR}:/data -v ${TMPDIR}:/tmp \&lt;br /&gt;
-e OMEGA_MAX_CONFS=2000 \&lt;br /&gt;
-e OMEGA_MAX_SEARCH_TIME=3600.0 \&lt;br /&gt;
building_configurable_omega bash /dock/ligand/submit/build-docker.sh&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Available OMEGA tuning knobs:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable !! Default !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_MAX_CONFS&amp;lt;/code&amp;gt; || 600 || Set to 0 for rotor-dependent auto-scaling&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_ENERGY_WINDOW&amp;lt;/code&amp;gt; || 12 || kcal/mol; tighter = fewer confs&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_RMSD&amp;lt;/code&amp;gt; || 0.5 || Å; larger = fewer confs (more pruning)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_TORLIB&amp;lt;/code&amp;gt; || GubaV21 || Or &amp;quot;Original&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_FF&amp;lt;/code&amp;gt; || MMFF94Smod || Force field&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_HARD_CODED_TOR_PATTERN&amp;lt;/code&amp;gt; || 1 || Amide/guanidinium planarity constraints&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_MAX_SEARCH_TIME&amp;lt;/code&amp;gt; || 120.0 || Previously hardcoded; now configurable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Useful DOCK3.8 binaries==&lt;br /&gt;
On gimel / bks cluster:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(base) -sh-4.2$ pwd&lt;br /&gt;
/nfs/home/zack/software/dock_binaries&lt;br /&gt;
(base) -sh-4.2$ ls&lt;br /&gt;
dock64_light_mol2  dock64_no_maxnode_limit_divya  dock64_verbose_no_viable_poses  dock64_verbose_no_viable_poses_and_safe_db2_load_fail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zack</name></author>
	</entry>
	<entry>
		<id>http://wiki.docking.org/index.php?title=Zack_useful_snippets&amp;diff=17170</id>
		<title>Zack useful snippets</title>
		<link rel="alternate" type="text/html" href="http://wiki.docking.org/index.php?title=Zack_useful_snippets&amp;diff=17170"/>
		<updated>2026-04-29T20:44:51Z</updated>

		<summary type="html">&lt;p&gt;Zack: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are small tidbits of info collected over time that are too unpolished for their own page, but useful enough for someone at some point, maybe. They may not be fully reliable.&lt;br /&gt;
&lt;br /&gt;
==DB2 to MOL2==&lt;br /&gt;
&lt;br /&gt;
Use the following python2 script:&lt;br /&gt;
&lt;br /&gt;
 /nfs/home/zack/software/zack_bks_scripts/db2_to_mol2/db2_to_mol2.py&lt;br /&gt;
&lt;br /&gt;
==MOL2 to DB2==&lt;br /&gt;
&lt;br /&gt;
The Docker image lives on epyc:&lt;br /&gt;
&lt;br /&gt;
 (pydock_env) [zack@epyc building_single_mol2]$ docker images | grep building&lt;br /&gt;
 building_single_mol2          latest            cdadaf7a2ffc   6 minutes ago   3.94GB&lt;br /&gt;
&lt;br /&gt;
The script to use is at:&lt;br /&gt;
&lt;br /&gt;
 ~/software/zack_bks_scripts/build_single_pose.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Usage: build_single_pose.sh &amp;lt;input.mol2&amp;gt; &amp;lt;output_dir&amp;gt; [pose_name]&lt;br /&gt;
#&lt;br /&gt;
# Builds a single-conformer DB2 from a mol2 pose.&lt;br /&gt;
# Output: &amp;lt;output_dir&amp;gt;/bundle.db2.tgz  (contains &amp;lt;pose_name&amp;gt;.&amp;lt;charge&amp;gt;.db2)&lt;br /&gt;
&lt;br /&gt;
set -euo pipefail&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$#&amp;quot; -lt 2 ] || [ &amp;quot;$#&amp;quot; -gt 3 ]; then&lt;br /&gt;
    echo &amp;quot;Usage: $0 &amp;lt;input.mol2&amp;gt; &amp;lt;output_dir&amp;gt; [pose_name]&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
INPUT_MOL2=$(realpath &amp;quot;$1&amp;quot;)&lt;br /&gt;
OUTPUT_DIR=$(realpath &amp;quot;$2&amp;quot;)&lt;br /&gt;
POSE_NAME=&amp;quot;${3:-}&amp;quot;   # optional; derived from mol2 name if blank&lt;br /&gt;
&lt;br /&gt;
if [ ! -f &amp;quot;$INPUT_MOL2&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Error: input mol2 not found: $INPUT_MOL2&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
mkdir -p &amp;quot;$OUTPUT_DIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Stage input into a work dir the container will see as /data&lt;br /&gt;
WORKDIR=$(mktemp -d /tmp/pose_work_XXXXXX)&lt;br /&gt;
chmod 777 &amp;quot;$WORKDIR&amp;quot;&lt;br /&gt;
trap &amp;quot;rm -rf $WORKDIR&amp;quot; EXIT&lt;br /&gt;
&lt;br /&gt;
cp &amp;quot;$INPUT_MOL2&amp;quot; &amp;quot;$WORKDIR/input.mol2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Scratch dir for the container&#039;s /tmp&lt;br /&gt;
SCRATCH=$(mktemp -d /tmp/pose_scratch_XXXXXX)&lt;br /&gt;
chmod 777 &amp;quot;$SCRATCH&amp;quot;&lt;br /&gt;
trap &amp;quot;rm -rf $WORKDIR $SCRATCH&amp;quot; EXIT&lt;br /&gt;
&lt;br /&gt;
docker run --rm \&lt;br /&gt;
    -u &amp;quot;$(id -u):$(id -g)&amp;quot; \&lt;br /&gt;
    -v &amp;quot;$WORKDIR:/data&amp;quot; \&lt;br /&gt;
    -v &amp;quot;$SCRATCH:/tmp&amp;quot; \&lt;br /&gt;
    -e POSE_NAME=&amp;quot;$POSE_NAME&amp;quot; \&lt;br /&gt;
    building_single_mol2 \&lt;br /&gt;
    bash -c &amp;quot;source /pyenv/bin/activate &amp;amp;&amp;amp; cd /tmp &amp;amp;&amp;amp; python /build_single_pose.py&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Move the result to the requested output dir&lt;br /&gt;
if [ ! -f &amp;quot;$WORKDIR/bundle.db2.tgz&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Error: build failed — no bundle.db2.tgz produced&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
mv &amp;quot;$WORKDIR/bundle.db2.tgz&amp;quot; &amp;quot;$OUTPUT_DIR/bundle.db2.tgz&amp;quot;&lt;br /&gt;
echo &amp;quot;Done: $OUTPUT_DIR/bundle.db2.tgz&amp;quot;&lt;br /&gt;
tar -tzf &amp;quot;$OUTPUT_DIR/bundle.db2.tgz&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# auto-derive pose name from the input mol2&lt;br /&gt;
./build_single_pose.sh xtal-lig_4mer_round2.mol2 /path/to/output&lt;br /&gt;
&lt;br /&gt;
# or override the pose name explicitly&lt;br /&gt;
./build_single_pose.sh xtal-lig_4mer_round2.mol2 /path/to/output 4mer_WT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure the final bundle is in the format:&lt;br /&gt;
&lt;br /&gt;
 bundle.db2.tgz/{LIG_NAME}.dock.db2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Alternative method&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This approach runs on n-1-21 but has not been fully verified:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# on n-1-21&lt;br /&gt;
conda deactivate&lt;br /&gt;
source /nfs/soft/dock/versions/dock37/DOCK-3.7.5.0/env.sh&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
$DOCKBASE/ligand/generate/build_ligand.sh xtal-lig_4mer_round2.mol2 \&lt;br /&gt;
  --name=&amp;quot;4MER&amp;quot; \&lt;br /&gt;
  --smiles=&amp;quot;NC(=[NH2+])NCCC[C@H](NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@@H](N)CO)C(=O)NCCC(N)=O&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Last step will break. Exit out of n-1-21.&lt;br /&gt;
conda deactivate&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
source /nfs/soft/dock/versions/dock385/env.sh&lt;br /&gt;
&lt;br /&gt;
# Go back to the dir and re-run:&lt;br /&gt;
$DOCKBASE/ligand/generate/build_ligand.sh xtal-lig_4mer_round2.mol2 \&lt;br /&gt;
  --name=&amp;quot;4MER&amp;quot; \&lt;br /&gt;
  --smiles=&amp;quot;NC(=[NH2+])NCCC[C@H](NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@@H](N)CO)C(=O)NCCC(N)=O&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# It should error out earlier, but package the results into db2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, make sure the final bundle is in the format:&lt;br /&gt;
&lt;br /&gt;
 bundle.db2.tgz/{LIG_NAME}.dock.db2&lt;br /&gt;
&lt;br /&gt;
==Scoring a Single MOL2==&lt;br /&gt;
&lt;br /&gt;
Based on the [https://wiki.docking.org/index.php?title=Rescoring_with_DOCK_3.7 Rescoring with DOCK 3.7] wiki page, specifically using &amp;lt;code&amp;gt;rescoring.tar.gz&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Run the following steps in order on n-1-21:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set up environment&lt;br /&gt;
conda deactivate&lt;br /&gt;
source /nfs/soft/dock/versions/dock385/env.sh&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
source /nfs/soft/dock/versions/dock37/DOCK-3.7.5.0/env.sh&lt;br /&gt;
&lt;br /&gt;
cp -r /nfs/home/zack/software/zack_bks_scripts/pose_build_and_rescore_dock3/ ./&lt;br /&gt;
python convert_anyMol2_to_dockMol2.py {YOUR_MOL2} {DOCKABLE_MOL2} {LIG_NAME}&lt;br /&gt;
csh 1.run.rescore_prep.csh {DOCKABLE_MOL2}&lt;br /&gt;
&lt;br /&gt;
# There should now be: poses.mol2.gz, amsol.txt.gz, vdw.txt.gz&lt;br /&gt;
# The dock binary included is for convenience only&lt;br /&gt;
# INDOCK has search_type and other fields that point to the built pose&lt;br /&gt;
./dock64 INDOCK &amp;gt; OUTDOCK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Environment for AMSOL==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda deactivate&lt;br /&gt;
source /nfs/soft/dock/versions/dock385/env.sh&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
source /nfs/soft/dock/versions/dock37/DOCK-3.7.5.0/env.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generating More Conformers in Ligand Building==&lt;br /&gt;
&lt;br /&gt;
A new Docker image &amp;lt;code&amp;gt;building_configurable_omega&amp;lt;/code&amp;gt; was created to expose OMEGA tuning parameters as environment variables. Only epyc has this image. It also prints the number of conformers saved into db2 in the log.&lt;br /&gt;
&lt;br /&gt;
Example SLURM script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --output=active_building/logs/slurm-%A_%a.out&lt;br /&gt;
#SBATCH --array=1-2&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
#SBATCH --mem=2500M&lt;br /&gt;
#SBATCH --nodelist=epyc&lt;br /&gt;
&lt;br /&gt;
TMPDIR=$(mktemp -d /scratch/job_${SLURM_JOB_ID}_${SLURM_ARRAY_TASK_ID}_XXXXXX)&lt;br /&gt;
trap &amp;quot;rm -rf $TMPDIR&amp;quot; EXIT&lt;br /&gt;
export INDIR=&amp;quot;/mnt/nfs/exk/work/zack/npsr1/UCSF_DOCK/setup_prep/round2/decoys/built_decoys/active_building/${SLURM_ARRAY_TASK_ID}&amp;quot;&lt;br /&gt;
newgrp docker &amp;lt;&amp;lt; EOF&lt;br /&gt;
docker run --rm -u $(id -u):$(id -g) -v ${INDIR}:/data -v ${TMPDIR}:/tmp \&lt;br /&gt;
-e OMEGA_MAX_CONFS=2000 \&lt;br /&gt;
-e OMEGA_MAX_SEARCH_TIME=3600.0 \&lt;br /&gt;
building_configurable_omega bash /dock/ligand/submit/build-docker.sh&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Available OMEGA tuning knobs:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable !! Default !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_MAX_CONFS&amp;lt;/code&amp;gt; || 600 || Set to 0 for rotor-dependent auto-scaling&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_ENERGY_WINDOW&amp;lt;/code&amp;gt; || 12 || kcal/mol; tighter = fewer confs&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_RMSD&amp;lt;/code&amp;gt; || 0.5 || Å; larger = fewer confs (more pruning)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_TORLIB&amp;lt;/code&amp;gt; || GubaV21 || Or &amp;quot;Original&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_FF&amp;lt;/code&amp;gt; || MMFF94Smod || Force field&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_HARD_CODED_TOR_PATTERN&amp;lt;/code&amp;gt; || 1 || Amide/guanidinium planarity constraints&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_MAX_SEARCH_TIME&amp;lt;/code&amp;gt; || 120.0 || Previously hardcoded; now configurable&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Zack</name></author>
	</entry>
	<entry>
		<id>http://wiki.docking.org/index.php?title=Zack_useful_snippets&amp;diff=17169</id>
		<title>Zack useful snippets</title>
		<link rel="alternate" type="text/html" href="http://wiki.docking.org/index.php?title=Zack_useful_snippets&amp;diff=17169"/>
		<updated>2026-04-29T20:43:58Z</updated>

		<summary type="html">&lt;p&gt;Zack: initial page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are small tidbits of info collected over time that are too unpolished for their own page, but useful enough for someone at some point, maybe. They may not be fully reliable.&lt;br /&gt;
&lt;br /&gt;
==DB2 to MOL2==&lt;br /&gt;
&lt;br /&gt;
Use the following python2 script:&lt;br /&gt;
&lt;br /&gt;
 /nfs/home/zack/software/zack_bks_scripts/db2_to_mol2/db2_to_mol2.py&lt;br /&gt;
&lt;br /&gt;
==MOL2 to DB2==&lt;br /&gt;
&lt;br /&gt;
The Docker image lives on epyc:&lt;br /&gt;
&lt;br /&gt;
 (pydock_env) [zack@epyc building_single_mol2]$ docker images | grep building&lt;br /&gt;
 building_single_mol2          latest            cdadaf7a2ffc   6 minutes ago   3.94GB&lt;br /&gt;
&lt;br /&gt;
The script to use is at:&lt;br /&gt;
&lt;br /&gt;
 ~/software/zack_bks_scripts/build_single_pose.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Usage: build_single_pose.sh &amp;lt;input.mol2&amp;gt; &amp;lt;output_dir&amp;gt; [pose_name]&lt;br /&gt;
#&lt;br /&gt;
# Builds a single-conformer DB2 from a mol2 pose.&lt;br /&gt;
# Output: &amp;lt;output_dir&amp;gt;/bundle.db2.tgz  (contains &amp;lt;pose_name&amp;gt;.&amp;lt;charge&amp;gt;.db2)&lt;br /&gt;
&lt;br /&gt;
set -euo pipefail&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$#&amp;quot; -lt 2 ] || [ &amp;quot;$#&amp;quot; -gt 3 ]; then&lt;br /&gt;
    echo &amp;quot;Usage: $0 &amp;lt;input.mol2&amp;gt; &amp;lt;output_dir&amp;gt; [pose_name]&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
INPUT_MOL2=$(realpath &amp;quot;$1&amp;quot;)&lt;br /&gt;
OUTPUT_DIR=$(realpath &amp;quot;$2&amp;quot;)&lt;br /&gt;
POSE_NAME=&amp;quot;${3:-}&amp;quot;   # optional; derived from mol2 name if blank&lt;br /&gt;
&lt;br /&gt;
if [ ! -f &amp;quot;$INPUT_MOL2&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Error: input mol2 not found: $INPUT_MOL2&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
mkdir -p &amp;quot;$OUTPUT_DIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Stage input into a work dir the container will see as /data&lt;br /&gt;
WORKDIR=$(mktemp -d /tmp/pose_work_XXXXXX)&lt;br /&gt;
chmod 777 &amp;quot;$WORKDIR&amp;quot;&lt;br /&gt;
trap &amp;quot;rm -rf $WORKDIR&amp;quot; EXIT&lt;br /&gt;
&lt;br /&gt;
cp &amp;quot;$INPUT_MOL2&amp;quot; &amp;quot;$WORKDIR/input.mol2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Scratch dir for the container&#039;s /tmp&lt;br /&gt;
SCRATCH=$(mktemp -d /tmp/pose_scratch_XXXXXX)&lt;br /&gt;
chmod 777 &amp;quot;$SCRATCH&amp;quot;&lt;br /&gt;
trap &amp;quot;rm -rf $WORKDIR $SCRATCH&amp;quot; EXIT&lt;br /&gt;
&lt;br /&gt;
docker run --rm \&lt;br /&gt;
    -u &amp;quot;$(id -u):$(id -g)&amp;quot; \&lt;br /&gt;
    -v &amp;quot;$WORKDIR:/data&amp;quot; \&lt;br /&gt;
    -v &amp;quot;$SCRATCH:/tmp&amp;quot; \&lt;br /&gt;
    -e POSE_NAME=&amp;quot;$POSE_NAME&amp;quot; \&lt;br /&gt;
    building_single_mol2 \&lt;br /&gt;
    bash -c &amp;quot;source /pyenv/bin/activate &amp;amp;&amp;amp; cd /tmp &amp;amp;&amp;amp; python /build_single_pose.py&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Move the result to the requested output dir&lt;br /&gt;
if [ ! -f &amp;quot;$WORKDIR/bundle.db2.tgz&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Error: build failed — no bundle.db2.tgz produced&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
mv &amp;quot;$WORKDIR/bundle.db2.tgz&amp;quot; &amp;quot;$OUTPUT_DIR/bundle.db2.tgz&amp;quot;&lt;br /&gt;
echo &amp;quot;Done: $OUTPUT_DIR/bundle.db2.tgz&amp;quot;&lt;br /&gt;
tar -tzf &amp;quot;$OUTPUT_DIR/bundle.db2.tgz&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# auto-derive pose name from the input mol2&lt;br /&gt;
./build_single_pose.sh xtal-lig_4mer_round2.mol2 /path/to/output&lt;br /&gt;
&lt;br /&gt;
# or override the pose name explicitly&lt;br /&gt;
./build_single_pose.sh xtal-lig_4mer_round2.mol2 /path/to/output 4mer_WT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure the final bundle is in the format:&lt;br /&gt;
&lt;br /&gt;
 bundle.db2.tgz/{LIG_NAME}.dock.db2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Alternative method&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This approach runs on n-1-21 but has not been fully verified:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# on n-1-21&lt;br /&gt;
conda deactivate&lt;br /&gt;
source /nfs/soft/dock/versions/dock37/DOCK-3.7.5.0/env.sh&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
$DOCKBASE/ligand/generate/build_ligand.sh xtal-lig_4mer_round2.mol2 \&lt;br /&gt;
  --name=&amp;quot;4MER&amp;quot; \&lt;br /&gt;
  --smiles=&amp;quot;NC(=[NH2+])NCCC[C@H](NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@@H](N)CO)C(=O)NCCC(N)=O&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Last step will break. Exit out of n-1-21.&lt;br /&gt;
conda deactivate&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
source /nfs/soft/dock/versions/dock385/env.sh&lt;br /&gt;
&lt;br /&gt;
# Go back to the dir and re-run:&lt;br /&gt;
$DOCKBASE/ligand/generate/build_ligand.sh xtal-lig_4mer_round2.mol2 \&lt;br /&gt;
  --name=&amp;quot;4MER&amp;quot; \&lt;br /&gt;
  --smiles=&amp;quot;NC(=[NH2+])NCCC[C@H](NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@@H](N)CO)C(=O)NCCC(N)=O&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# It should error out earlier, but package the results into db2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, make sure the final bundle is in the format:&lt;br /&gt;
&lt;br /&gt;
 bundle.db2.tgz/{LIG_NAME}.dock.db2&lt;br /&gt;
&lt;br /&gt;
==Scoring a Single MOL2==&lt;br /&gt;
&lt;br /&gt;
Based on the [https://wiki.docking.org/index.php?title=Rescoring_with_DOCK_3.7 Rescoring with DOCK 3.7] wiki page, specifically using &amp;lt;code&amp;gt;rescoring.tar.gz&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Run the following steps in order on n-1-21:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set up environment&lt;br /&gt;
conda deactivate&lt;br /&gt;
source /nfs/soft/dock/versions/dock385/env.sh&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
source /nfs/soft/dock/versions/dock37/DOCK-3.7.5.0/env.sh&lt;br /&gt;
&lt;br /&gt;
cp -r /nfs/home/zack/software/zack_bks_scripts/pose_build_and_rescore_dock3/ ./&lt;br /&gt;
python convert_anyMol2_to_dockMol2.py {YOUR_MOL2} {DOCKABLE_MOL2} {LIG_NAME}&lt;br /&gt;
csh 1.run.rescore_prep.csh {DOCKABLE_MOL2}&lt;br /&gt;
&lt;br /&gt;
# There should now be: poses.mol2.gz, amsol.txt.gz, vdw.txt.gz&lt;br /&gt;
# The dock binary included is for convenience only&lt;br /&gt;
# INDOCK has search_type and other fields that point to the built pose&lt;br /&gt;
./dock64 INDOCK &amp;gt; OUTDOCK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Environment for AMSOL==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda deactivate&lt;br /&gt;
source /nfs/soft/dock/versions/dock385/env.sh&lt;br /&gt;
export DOCKBASE=&amp;quot;/nfs/soft/dock/versions/dock38/DOCK/ucsfdock&amp;quot;&lt;br /&gt;
source /nfs/soft/dock/versions/dock37/DOCK-3.7.5.0/env.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generating More Conformers in Ligand Building==&lt;br /&gt;
&lt;br /&gt;
A new Docker image &amp;lt;code&amp;gt;building_configurable_omega&amp;lt;/code&amp;gt; was created to expose OMEGA tuning parameters as environment variables. Only epyc has this image. It also prints the number of conformers saved into db2 in the log.&lt;br /&gt;
&lt;br /&gt;
Example SLURM script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --output=active_building/logs/slurm-%A_%a.out&lt;br /&gt;
#SBATCH --array=1-2&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
#SBATCH --mem=2500M&lt;br /&gt;
#SBATCH --nodelist=epyc&lt;br /&gt;
&lt;br /&gt;
TMPDIR=$(mktemp -d /scratch/job_${SLURM_JOB_ID}_${SLURM_ARRAY_TASK_ID}_XXXXXX)&lt;br /&gt;
trap &amp;quot;rm -rf $TMPDIR&amp;quot; EXIT&lt;br /&gt;
export INDIR=&amp;quot;/mnt/nfs/exk/work/zack/npsr1/UCSF_DOCK/setup_prep/round2/decoys/built_decoys/active_building/${SLURM_ARRAY_TASK_ID}&amp;quot;&lt;br /&gt;
newgrp docker &amp;lt;&amp;lt; EOF&lt;br /&gt;
docker run --rm -u $(id -u):$(id -g) -v ${INDIR}:/data -v ${TMPDIR}:/tmp \&lt;br /&gt;
-e OMEGA_MAX_CONFS=2000 \&lt;br /&gt;
-e OMEGA_MAX_SEARCH_TIME=3600.0 \&lt;br /&gt;
building_configurable_omega bash /dock/ligand/submit/build-docker.sh&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Available OMEGA tuning knobs:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable !! Default !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_MAX_CONFS&amp;lt;/code&amp;gt; || 200 || Set to 0 for rotor-dependent auto-scaling&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_ENERGY_WINDOW&amp;lt;/code&amp;gt; || 12 || kcal/mol; tighter = fewer confs&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_RMSD&amp;lt;/code&amp;gt; || 0.5 || Å; larger = fewer confs (more pruning)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_TORLIB&amp;lt;/code&amp;gt; || GubaV21 || Or &amp;quot;Original&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_FF&amp;lt;/code&amp;gt; || MMFF94Smod || Force field&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_HARD_CODED_TOR_PATTERN&amp;lt;/code&amp;gt; || 1 || Amide/guanidinium planarity constraints&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OMEGA_MAX_SEARCH_TIME&amp;lt;/code&amp;gt; || 120.0 || Previously hardcoded; now configurable&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Zack</name></author>
	</entry>
</feed>