<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.docking.org/index.php?action=history&amp;feed=atom&amp;title=Protein_Target_Preparation_%28before_Blastermaster%29</id>
	<title>Protein Target Preparation (before Blastermaster) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.docking.org/index.php?action=history&amp;feed=atom&amp;title=Protein_Target_Preparation_%28before_Blastermaster%29"/>
	<link rel="alternate" type="text/html" href="http://wiki.docking.org/index.php?title=Protein_Target_Preparation_(before_Blastermaster)&amp;action=history"/>
	<updated>2026-07-10T06:12:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>http://wiki.docking.org/index.php?title=Protein_Target_Preparation_(before_Blastermaster)&amp;diff=17386&amp;oldid=prev</id>
		<title>Iamkaant at 22:07, 8 July 2026</title>
		<link rel="alternate" type="text/html" href="http://wiki.docking.org/index.php?title=Protein_Target_Preparation_(before_Blastermaster)&amp;diff=17386&amp;oldid=prev"/>
		<updated>2026-07-08T22:07:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:07, 8 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;prepare_protein.py&amp;#039;&amp;#039;&amp;#039; is a Python 3 script that automates the receptor and&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;prepare_protein.py&amp;#039;&amp;#039;&amp;#039; is a Python 3 script that automates the receptor and&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ligand preparation procedure that is otherwise done by hand in Chimera + vim&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ligand preparation procedure that is otherwise done by hand in Chimera + vim&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;before running [[Blastermaster]]. Starting from the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Chimera&lt;/del&gt;-minimized files&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;before running [[Blastermaster]]. Starting from the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Maestro&lt;/ins&gt;-minimized files&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(&amp;lt;code&amp;gt;rec_minimized_final.pdb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xtal_minimized_final.pdb&amp;lt;/code&amp;gt;),&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(&amp;lt;code&amp;gt;rec_minimized_final.pdb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xtal_minimized_final.pdb&amp;lt;/code&amp;gt;),&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;it produces the cleaned, charged, correctly-named PDB files and the&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;it produces the cleaned, charged, correctly-named PDB files and the&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot;&gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Quick start ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Quick start ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Run &lt;/del&gt;in the directory that holds the two input files:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;On Gimel, run &lt;/ins&gt;in the directory that holds the two input files:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;python3 prepare_protein.py&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;python3 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/mnt/nfs/exa/work/ak87/UCSF/SCRIPTS/DOCKING/&lt;/ins&gt;prepare_protein.py&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l38&quot;&gt;Line 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 38:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;python3 prepare_protein.py \&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;python3 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/mnt/nfs/exa/work/ak87/UCSF/SCRIPTS/DOCKING/&lt;/ins&gt;prepare_protein.py \&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     --rec  rec_minimized_final.pdb \&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     --rec  rec_minimized_final.pdb \&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     --xtal xtal_minimized_final.pdb \&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     --xtal xtal_minimized_final.pdb \&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff::1.12:old-17385:rev-17386 --&gt;
&lt;/table&gt;</summary>
		<author><name>Iamkaant</name></author>
	</entry>
	<entry>
		<id>http://wiki.docking.org/index.php?title=Protein_Target_Preparation_(before_Blastermaster)&amp;diff=17385&amp;oldid=prev</id>
		<title>Iamkaant: first commit</title>
		<link rel="alternate" type="text/html" href="http://wiki.docking.org/index.php?title=Protein_Target_Preparation_(before_Blastermaster)&amp;diff=17385&amp;oldid=prev"/>
		<updated>2026-07-08T22:04:41Z</updated>

		<summary type="html">&lt;p&gt;first commit&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Protein preparation for docking (prepare_protein.py) =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;prepare_protein.py&amp;#039;&amp;#039;&amp;#039; is a Python 3 script that automates the receptor and&lt;br /&gt;
ligand preparation procedure that is otherwise done by hand in Chimera + vim&lt;br /&gt;
before running [[Blastermaster]]. Starting from the Chimera-minimized files&lt;br /&gt;
(&amp;lt;code&amp;gt;rec_minimized_final.pdb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xtal_minimized_final.pdb&amp;lt;/code&amp;gt;),&lt;br /&gt;
it produces the cleaned, charged, correctly-named PDB files and the&lt;br /&gt;
&amp;lt;code&amp;gt;working/&amp;lt;/code&amp;gt; directory that Blastermaster expects.&lt;br /&gt;
&lt;br /&gt;
It folds in the logic of the two legacy helper scripts&lt;br /&gt;
(&amp;lt;code&amp;gt;replace_his_with_hie_hid_hip.py&amp;lt;/code&amp;gt; and&lt;br /&gt;
&amp;lt;code&amp;gt;0000_remove_hydrogens_from_pdb.py&amp;lt;/code&amp;gt;), so those no longer need to be&lt;br /&gt;
run separately.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Python 3 (no third-party packages; standard library only)&lt;br /&gt;
* Two input PDB files that have already been through the manual Chimera steps&lt;br /&gt;
  (open structure, add hydrogens / protonate with reduce, check termini and the&lt;br /&gt;
  protonation states of charged residues, then save):&lt;br /&gt;
** the receptor, saved as &amp;lt;code&amp;gt;rec_minimized_final.pdb&amp;lt;/code&amp;gt;&lt;br /&gt;
** the crystallographic ligand, saved as &amp;lt;code&amp;gt;xtal_minimized_final.pdb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The receptor file must still contain its hydrogens (including the polar&lt;br /&gt;
&amp;lt;code&amp;gt;HD1&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;HE2&amp;lt;/code&amp;gt; on histidines) — these are required to assign&lt;br /&gt;
the HIS protonation states. The script removes hydrogens itself at the correct&lt;br /&gt;
stages.&lt;br /&gt;
&lt;br /&gt;
== Quick start ==&lt;br /&gt;
&lt;br /&gt;
Run in the directory that holds the two input files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 prepare_protein.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or specify paths explicitly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 prepare_protein.py \&lt;br /&gt;
    --rec  rec_minimized_final.pdb \&lt;br /&gt;
    --xtal xtal_minimized_final.pdb \&lt;br /&gt;
    --output-dir .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What it does ==&lt;br /&gt;
&lt;br /&gt;
=== Ligand pipeline ===&lt;br /&gt;
&lt;br /&gt;
# Strips all header, &amp;lt;code&amp;gt;REMARK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CONECT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;END&amp;lt;/code&amp;gt; lines.&lt;br /&gt;
# Deletes all hydrogens (sphere matching does not use them).&lt;br /&gt;
# Writes &amp;lt;code&amp;gt;xtal-lig.pdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Receptor pipeline ===&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Checks + fixes residue numbering.&amp;#039;&amp;#039;&amp;#039; If the order of residues in the file does not match their residue numbers, the residue lines are reordered into ascending numeric order (the residue number is treated as ground truth). See [[#Residue numbering|Residue numbering]].&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Removes insertion-code letters.&amp;#039;&amp;#039;&amp;#039; A residue such as &amp;lt;code&amp;gt;NMA 378A&amp;lt;/code&amp;gt; is renumbered to the next integer (&amp;lt;code&amp;gt;379&amp;lt;/code&amp;gt;), and every following residue in that chain is shifted up by one so nothing collides.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Strips headers.&amp;#039;&amp;#039;&amp;#039; Removes &amp;lt;code&amp;gt;HEADER&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;TITLE&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;REMARK&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;ANISOU&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;CONECT&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;TER&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;END&amp;lt;/code&amp;gt; records, keeping only atoms.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;quot;del HC&amp;quot;.&amp;#039;&amp;#039;&amp;#039; Deletes hydrogens bonded to carbon (the equivalent of Chimera&amp;#039;s &amp;lt;code&amp;gt;del HC&amp;lt;/code&amp;gt;); polar hydrogens on N/O/S are kept. See [[#Removing carbon-bound hydrogens|del HC]].&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Caps.&amp;#039;&amp;#039;&amp;#039; Converts &amp;lt;code&amp;gt;ACE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;NMA&amp;lt;/code&amp;gt; cap records from &amp;lt;code&amp;gt;HETATM&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;ATOM&amp;lt;/code&amp;gt;, and renames the NMA cap &amp;lt;code&amp;gt;CA&amp;lt;/code&amp;gt; atom to &amp;lt;code&amp;gt;CM&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Backbone amide H.&amp;#039;&amp;#039;&amp;#039; Renames the backbone amide hydrogen (&amp;lt;code&amp;gt;H1&amp;lt;/code&amp;gt;) of the residue following an ACE cap to &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Disulfides.&amp;#039;&amp;#039;&amp;#039; Detects disulfide-bonded cysteines and renames them &amp;lt;code&amp;gt;CYS → CYX&amp;lt;/code&amp;gt;. See [[#Disulfide detection|Disulfide detection]].&lt;br /&gt;
# Writes &amp;lt;code&amp;gt;rec_noHC.pdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;HIS protonation.&amp;#039;&amp;#039;&amp;#039; Assigns &amp;lt;code&amp;gt;HID&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;HIE&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;HIP&amp;lt;/code&amp;gt; from the reduce hydrogens (&amp;lt;code&amp;gt;HD1&amp;lt;/code&amp;gt; → delta, &amp;lt;code&amp;gt;HE2&amp;lt;/code&amp;gt; → epsilon, both → HIP). Writes &amp;lt;code&amp;gt;rec_noHC.crg.pdb&amp;lt;/code&amp;gt; (this is &amp;lt;code&amp;gt;rec.crg.pdb&amp;lt;/code&amp;gt;) and copies it into &amp;lt;code&amp;gt;working/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Removes all remaining hydrogens&amp;#039;&amp;#039;&amp;#039;, writing &amp;lt;code&amp;gt;rec_noH.pdb&amp;lt;/code&amp;gt; (this is &amp;lt;code&amp;gt;rec.pdb&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Output layout ==&lt;br /&gt;
&lt;br /&gt;
Inside &amp;lt;code&amp;gt;--output-dir&amp;lt;/code&amp;gt; (default = current directory):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xtal-lig.pdb            # ligand, heavy atoms only&lt;br /&gt;
rec_noHC.pdb            # receptor, cleaned, carbon-H removed, caps/CYX/numbering fixed&lt;br /&gt;
rec_noHC.crg.pdb        # + HIS protonation states assigned  (== rec.crg.pdb)&lt;br /&gt;
rec_noH.pdb             # + all hydrogens removed             (== rec.pdb)&lt;br /&gt;
rec.pdb                 # final no-hydrogen receptor&lt;br /&gt;
working/&lt;br /&gt;
    rec.crg.pdb         # the ONLY file placed in working/ (charged receptor for Blastermaster)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The two files you normally hand to Blastermaster are&lt;br /&gt;
&amp;lt;code&amp;gt;working/rec.crg.pdb&amp;lt;/code&amp;gt; (charged) and &amp;lt;code&amp;gt;rec.pdb&amp;lt;/code&amp;gt; (no&lt;br /&gt;
hydrogens), together with &amp;lt;code&amp;gt;xtal-lig.pdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Command-line options ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Option !! Default !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--rec FILE&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;rec_minimized_final.pdb&amp;lt;/code&amp;gt; || Chimera-minimized receptor PDB.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--xtal FILE&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;xtal_minimized_final.pdb&amp;lt;/code&amp;gt; || Chimera-minimized ligand PDB.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--output-dir DIR&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; (current dir) || Directory to write prepared files into.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--cyx &amp;quot;LIST&amp;quot;&amp;lt;/code&amp;gt; || (none) || CYS residues to force to CYX, e.g. &amp;lt;code&amp;gt;&amp;quot;32 56 297 338&amp;quot;&amp;lt;/code&amp;gt; or chain-qualified &amp;lt;code&amp;gt;&amp;quot;A32 B56&amp;quot;&amp;lt;/code&amp;gt;. Combined with automatic detection unless &amp;lt;code&amp;gt;--no-auto-disulfide&amp;lt;/code&amp;gt; is given.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--no-auto-disulfide&amp;lt;/code&amp;gt; || off || Disable automatic SG–SG disulfide detection; use only the residues supplied via &amp;lt;code&amp;gt;--cyx&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--ss-cutoff Å&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;2.5&amp;lt;/code&amp;gt; || SG–SG distance (Å) below which a disulfide is called.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--keep-het &amp;quot;LIST&amp;quot;&amp;lt;/code&amp;gt; || (none) || &amp;lt;code&amp;gt;HETATM&amp;lt;/code&amp;gt; residue names to keep, e.g. &amp;lt;code&amp;gt;&amp;quot;CA ZN NAG&amp;quot;&amp;lt;/code&amp;gt;. Waters and unlisted hetero groups are dropped. ACE/NMA caps are always kept and converted to ATOM.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--keep-carbon-h&amp;lt;/code&amp;gt; || off || Keep hydrogens bonded to carbon (skip &amp;quot;del HC&amp;quot;). Polar hydrogens are always kept regardless.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--relabel-chains&amp;lt;/code&amp;gt; || off || Relabel chain IDs to sequential letters A, B, C… in order of appearance (fixes gaps such as A, C → A, B).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--unify-chain-id ID&amp;lt;/code&amp;gt; || (none) || Give every chain the same ID in the final &amp;lt;code&amp;gt;rec.pdb&amp;lt;/code&amp;gt; only; &amp;lt;code&amp;gt;rec.crg.pdb&amp;lt;/code&amp;gt; keeps proper chains for Blastermaster.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;--no-reorder&amp;lt;/code&amp;gt; || off || Do not reorder residues by number. Insertion-code letters are still stripped.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Feature details ==&lt;br /&gt;
&lt;br /&gt;
=== Residue numbering ===&lt;br /&gt;
&lt;br /&gt;
Sometimes the order in which residues appear in a file does not match their&lt;br /&gt;
residue numbers (for example a residue numbered 14 physically appearing after&lt;br /&gt;
residue 378). By default the script detects this and &amp;#039;&amp;#039;&amp;#039;reorders the residue&lt;br /&gt;
lines into ascending numeric order within each chain&amp;#039;&amp;#039;&amp;#039;, treating the residue&lt;br /&gt;
number as ground truth.&lt;br /&gt;
&lt;br /&gt;
* Numbering gaps (missing residues) are preserved — they are legitimate.&lt;br /&gt;
* Insertion codes are then removed: &amp;lt;code&amp;gt;378A&amp;lt;/code&amp;gt; becomes &amp;lt;code&amp;gt;379&amp;lt;/code&amp;gt;, and every following residue is shifted up by one to avoid a collision (a cascade). Chains are handled independently.&lt;br /&gt;
* Use &amp;lt;code&amp;gt;--no-reorder&amp;lt;/code&amp;gt; to leave the physical order untouched (letters are still stripped).&lt;br /&gt;
&lt;br /&gt;
The run log reports exactly what moved and what was renumbered, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[check] residue numbering does NOT match sequence order in rec_minimized_final.pdb:&lt;br /&gt;
  * chain A: LEU 14 (line 8986) is out of order -- its number is not greater than the preceding residue NMA 378A (line 8980)&lt;br /&gt;
  -&amp;gt; residues will be reordered by number (see below)&lt;br /&gt;
  reordered to numeric position: A/LEU 14&lt;br /&gt;
  renumbered (insertion codes removed / following residues shifted):&lt;br /&gt;
    A/NMA 378A -&amp;gt; 379&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disulfide detection ===&lt;br /&gt;
&lt;br /&gt;
Disulfides are found geometrically: the script measures the distance between&lt;br /&gt;
every pair of cysteine &amp;lt;code&amp;gt;SG&amp;lt;/code&amp;gt; atoms (across all chains) and renames both&lt;br /&gt;
residues &amp;lt;code&amp;gt;CYS → CYX&amp;lt;/code&amp;gt; when the distance is below the cutoff&lt;br /&gt;
(default 2.5 Å). It does &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; rely on &amp;lt;code&amp;gt;CONECT&amp;lt;/code&amp;gt; records, so it works&lt;br /&gt;
even when connectivity is missing or incomplete.&lt;br /&gt;
&lt;br /&gt;
For every cysteine it also prints the nearest-neighbour SG distance, so&lt;br /&gt;
borderline cases are easy to inspect:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  disulfides (auto, SG-SG &amp;lt; 2.5 A):&lt;br /&gt;
    CYX A/32 -- CYX A/56  (2.05 A)&lt;br /&gt;
  all CYS SG nearest-neighbour distances:&lt;br /&gt;
    CYS A/32    nearest A/56    2.05 A -&amp;gt; CYX&lt;br /&gt;
    CYS A/297   nearest A/338   3.44 A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To override the geometry (e.g. to force a bridge, or to name residues yourself):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# add explicit residues to the auto-detected set&lt;br /&gt;
python3 prepare_protein.py --cyx &amp;quot;297 338&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# use ONLY the listed residues, chain-qualified, no geometry&lt;br /&gt;
python3 prepare_protein.py --cyx &amp;quot;A32 A56&amp;quot; --no-auto-disulfide&lt;br /&gt;
&lt;br /&gt;
# loosen/tighten the distance threshold&lt;br /&gt;
python3 prepare_protein.py --ss-cutoff 2.3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HIS protonation ===&lt;br /&gt;
&lt;br /&gt;
Histidine protonation is read directly from the reduce-added hydrogens present&lt;br /&gt;
in the input:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Hydrogen present !! Assigned residue name&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HD1&amp;lt;/code&amp;gt; only (on ND1) || &amp;lt;code&amp;gt;HID&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HE2&amp;lt;/code&amp;gt; only (on NE2) || &amp;lt;code&amp;gt;HIE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| both &amp;lt;code&amp;gt;HD1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;HE2&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;HIP&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because these markers are on nitrogen, they survive the &amp;quot;del HC&amp;quot; step, so the&lt;br /&gt;
assignment is unaffected by hydrogen removal.&lt;br /&gt;
&lt;br /&gt;
=== Removing carbon-bound hydrogens (&amp;quot;del HC&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
For each hydrogen the script finds its bonded heavy atom (the nearest&lt;br /&gt;
non-hydrogen atom in the same residue) and deletes the hydrogen when that atom&lt;br /&gt;
is a carbon. Polar hydrogens on N/O/S — including the backbone amide H, the HIS&lt;br /&gt;
&amp;lt;code&amp;gt;HD1&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;HE2&amp;lt;/code&amp;gt;, and cap N–H atoms — are kept. This is&lt;br /&gt;
geometry-based rather than name-based, so it correctly handles ambiguous names&lt;br /&gt;
(such as &amp;lt;code&amp;gt;HD1&amp;lt;/code&amp;gt; on ND1 versus a carbon) and the renamed NMA&lt;br /&gt;
&amp;lt;code&amp;gt;CM&amp;lt;/code&amp;gt;. Pass &amp;lt;code&amp;gt;--keep-carbon-h&amp;lt;/code&amp;gt; to skip this step.&lt;br /&gt;
&lt;br /&gt;
=== Chains and HETATM ===&lt;br /&gt;
&lt;br /&gt;
* Renumbering, disulfide detection, caps, the H1→H rename, and HIS assignment all work per chain, so multi-chain receptors are supported.&lt;br /&gt;
* &amp;lt;code&amp;gt;--relabel-chains&amp;lt;/code&amp;gt; renames chains to sequential letters in order of appearance (e.g. A, C → A, B).&lt;br /&gt;
* &amp;lt;code&amp;gt;--unify-chain-id A&amp;lt;/code&amp;gt; gives every chain the same ID in the final &amp;lt;code&amp;gt;rec.pdb&amp;lt;/code&amp;gt; only, while &amp;lt;code&amp;gt;rec.crg.pdb&amp;lt;/code&amp;gt; keeps the proper chain names — this is the trick for getting Blastermaster to renumber a 2-chain receptor.&lt;br /&gt;
* Waters and other hetero groups are dropped by default. Keep specific ions or cofactors with &amp;lt;code&amp;gt;--keep-het &amp;quot;CA ZN&amp;quot;&amp;lt;/code&amp;gt;; kept HETATM groups are placed after the protein and are not reordered or renumbered.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Default run in the current directory&lt;br /&gt;
python3 prepare_protein.py&lt;br /&gt;
&lt;br /&gt;
# Keep a catalytic calcium and a zinc&lt;br /&gt;
python3 prepare_protein.py --keep-het &amp;quot;CA ZN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Two-chain receptor: relabel A,C -&amp;gt; A,B and unify IDs in rec.pdb&lt;br /&gt;
python3 prepare_protein.py --relabel-chains --unify-chain-id A&lt;br /&gt;
&lt;br /&gt;
# Force a specific disulfide set, no geometric detection&lt;br /&gt;
python3 prepare_protein.py --cyx &amp;quot;A32 A56 A297 A338&amp;quot; --no-auto-disulfide&lt;br /&gt;
&lt;br /&gt;
# Write outputs to a separate directory&lt;br /&gt;
python3 prepare_protein.py --output-dir prep_4x93&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verifying the output ==&lt;br /&gt;
&lt;br /&gt;
The run log is the first sanity check. Confirm that:&lt;br /&gt;
&lt;br /&gt;
* the numbering check passes (or reports the fix it applied);&lt;br /&gt;
* the detected disulfides match what you expect;&lt;br /&gt;
* the HIS states match your inspection in Chimera;&lt;br /&gt;
* the final lines read &amp;lt;code&amp;gt;NMA CA-&amp;gt;CM applied: True&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;NMA still CM: True&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Then open &amp;lt;code&amp;gt;rec.pdb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;working/rec.crg.pdb&amp;lt;/code&amp;gt; in a viewer&lt;br /&gt;
and check the termini, caps, disulfides and any kept ions before running&lt;br /&gt;
Blastermaster.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Blastermaster]]&lt;br /&gt;
* [[DOCK 3.8]]&lt;br /&gt;
* [[Preparing a receptor for DOCK]]&lt;br /&gt;
&lt;br /&gt;
[[Category:DOCK]]&lt;br /&gt;
[[Category:Receptor preparation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Iamkaant</name></author>
	</entry>
</feed>