EPMR - Molecular Replacement by Evolutionary Search https://epmr.org/ Recent content on EPMR - Molecular Replacement by Evolutionary Search Hugo -- gohugo.io Fri, 09 Mar 2018 10:14:22 -0800 Compiling https://epmr.org/compiling/ Fri, 09 Mar 2018 10:14:22 -0800 https://epmr.org/compiling/ <h2 id="linux">Linux</h2> <p>A Makefile is included with the C++ source code. To compile the program, you can run the <code>make</code> command in the top-level EPMR directory (<code>epmr-XX.XX</code>) or in the <code>src</code> directory. The code should compile cleanly with <code>gcc</code> (<code>g++</code>) and other modern C++ compilers. If you have administrator privileges, running the command <code>sudo make install</code> from the top-level directory will copy the executable to <code>/usr/local/bin</code>.</p> <p>To take advantage of multicore processors, the Makefile is set up to compile with OpenMP support (<code>-fopenmp</code> for g++). The program can also be compiled for multithreaded execution using the <code>-pthread</code> flag instead of <code>-fopenmp</code>. (This may be incompatible with the <code>-static</code> compiler flag).</p> <h2 id="macos">macOS</h2> <p>A make file is included with the C++ source code. The code should compile cleanly with clang++ and other modern C++ compilers. To install clang, download and install the Apple developer tools.</p> <h2 id="windows">Windows</h2> <p>The program can be compiled with Visual Studio, Visual C++ Express or the mingw g++ compiler. A Windows-specific make file, <code>epmr-win.mak</code>, is included with the source code.</p> Installing https://epmr.org/installing/ Fri, 09 Mar 2018 10:14:22 -0800 https://epmr.org/installing/ <h2 id="linux">Linux</h2> <p>You can choose to download a 32-bit binary that works on both 32- and 64-bit Linux operating systems or a 64-bit version that is a little faster but runs only on 64-bit systems. Uncompress the downloaded file using the <code>gunzip</code> command (e.g., <code>gunzip epmr-linux64.gz</code>). The uncompressed file is a standalone executable for Intel/AMD processors that should be compatible with all recent Linux distributions. The 32-bit version is statically linked and does not require 32-bit support libraries to run on 64-bit systems. You probably will need to set execute permission on the file after downloading using, for instance, the command <code>chmod +x epmr-linux32</code>.</p> <p>EPMR is run from the command line. To use the program, either place the file in any directory listed in your <code>PATH</code> environment variable (commonly <code>/usr/local/bin/</code>) or specify the complete path to the file on the command line. If you invoke the program without any command-line arguments, a summary of usage information and available options will be printed.</p> <p>The program is multi-threaded using OpenMP. The maximum number of threads/processors used can be controlled through the environment variable <code>OMP_NUM_THREADS</code>. If this variable is not set, all processors will be used.</p> <h2 id="macos">macOS</h2> <p>The downloaded zip file normally will be automatically uncompressed. If this does not occur, you can use the command <code>unzip epmr-mac.zip</code> on the command line (Terminal). The uncompressed file, <code>epmr-mac</code>, is a 32-/64-bit universal binary for Intel Macs running OS X 10.7 or later. You might need to set execute permission on the file after downloading using the command <code>chmod +x epmr-mac</code>.</p> <p>The program is a single, stand-alone executable. It runs from the command line. To use the program, either place the file in any directory listed in your <code>PATH</code> environment variable (commonly <code>/usr/local/bin/</code>) or specify the complete path to the file on the command line. If you invoke the program without any command-line arguments, a summary of usage information and available options will be printed.</p> <p>The program is multi-threaded and will generally use all available processors/cores.</p> <h2 id="windows">Windows</h2> <p>The file <code>epmr-win.exe</code> is a standalone 32-bit executable file that runs from the command line (cmd.exe or PowerShell). The program is compatible with 32- and 64-bit versions of Windows Vista, Windows 7, Windows 8 &amp; Windows 10.</p> <p>To use the program, either place the file in any directory listed in your <code>%PATH%</code> environment variable, modify your <code>%PATH%</code> to include the directory containing <code>epmr-win.exe</code>, or specify the complete path to the file on the command line. If you invoke the program without any command-line arguments, a summary of usage information and available options will be printed.</p> <p>The program is multi-threaded and will generally use all available processors/cores.</p> User Guide https://epmr.org/epmr-user-guide/ Fri, 09 Mar 2018 10:14:22 -0800 https://epmr.org/epmr-user-guide/ <h2 id="epmr-version-16-07-1">EPMR Version 16.07.1</h2> <p>Copyright &copy; 2005 - 2016 Charles R. Kissinger</p> <h2 id="introduction">Introduction</h2> <p>EPMR is a general-purpose crystallographic molecular replacement program. Unlike traditional molecular replacement programs, it does not divide the problem into separate rotation and translation searches. Instead, it uses an evolutionary search algorithm to simultaneously optimize the orientation and position of a search model (1, 2). The program operates as follows:</p> <ul> <li>An initial set of random solutions (random orientations and positions for the search model) is generated.</li> <li>The correlation coefficient between Fo and Fc is calculated for each trial solution.</li> <li>A fraction of the highest scoring solutions are retained and used to regenerate a complete set of new trial solutions. This is done by applying random alterations to the orientation angles and translations for each “surviving” solution.</li> <li>The correlation coefficients for the new population are calculated, the population is again regenerated from the top scoring solutions, and this procedure is repeated for a specified number of cycles.</li> </ul> <p>In this way, the algorithm provides broad, stochastic, initial sampling of the search space while gradually focusing in on the most promising regions. It allows for efficient searching of the six-dimensional (or higher) space. In general, it is several orders of magnitude faster than a brute-force, systematic, 6-D search. At the end of the evolutionary optimization, a local minimization is performed on the best solution. This is simply a rigid-body refinement of the search molecule.</p> <p>The program calculates structure factors rapidly by indexing into a molecular transform using the method of Huber and Schneider (3). A traditional structure factor calculation is done only once, for the search model set at the origin of a P1 cell. Subsequent structure factor calculations are done by transforming reflection indices according to the rotations and translations applied to the model and the relationship between the P1 and real cells, interpolating into the grid of P1 structure factors and summing over the symmetry operators of the crystal. This is much faster than an FFT calculation. A simple Babinet-type solvent correction is applied to the calculated structure factors. The values of the solvent correction parameters (k, B) are optimized during the search.</p> <p>Because of the stochastic nature of the evolutionary optimization process, the correct solution will not be obtained on every run, even with a very good search model. The success rate is dependent on the quality of the model (2). By default, 20 optimization attempts are done, and more may be required if you have a difficult problem. For search models that are poor and at the limit of detection, the search efficiency can be quite low. If you have a molecular replacement problem that has not yielded a solution by any other means, a reasonable last resort is to set up EPMR to do as many runs as your patience and computing resources will allow. As long as the true solution represents the global maximum in the correlation coefficient between Fo and Fc, even if by the slimmest of margins, the algorithm should eventually find it.</p> <p>EPMR includes the following features:</p> <ul> <li>the ability to automatically search for multiple copies of a molecule in the asymmetric unit, either sequentially or concurrently</li> <li>the ability to search with multiple models, either sequentially or simultaneously (i.e., in competition with each other)</li> <li>the ability to use multiple coordinate sets as parts of an “assembly” that comprises the complete search model</li> <li>an option to search over all related space groups, either sequentially or simultaneously</li> <li>rotation-only and translation-only search modes</li> <li>an option to provide static, partial structure</li> <li>independent optimization of each segment of a search model during the final rigid-body refinement step</li> <li>an option to bypass the evolutionary search and do only local, rigid-body optimization of the model</li> </ul> <p>This program is open-source software distributed under the MIT License (<a href="http://opensource.org/licenses/MIT">http://opensource.org/licenses/MIT</a>). A copy of the license is distributed with the source code. New versions of the program are released on a regular basis. The latest version of EPMR is always available for download from <a href="http://www.epmr.org">http://www.epmr.org</a>.</p> <p>Feedback is welcome. E-mail concerning the program can be sent to <a href="mailto:[email protected]">[email protected]</a>.</p> <p>If you publish results obtained using EPMR, please cite:</p> <p>Charles R. Kissinger, Daniel K. Gehlhaar &amp; David B. Fogel, “Rapid automated molecular replacement by evolutionary search”, <em>Acta Crystallographica</em>, <strong>D55</strong>, 484-491 (1999).</p> <h2 id="usage">Usage</h2> <p>EPMR is run from the command line. The program requires either two or three input files depending on the types of files used. The first file specified on the command line generally will be either a Scalepack (<em>.sca</em>) file or a CCP4 MTZ file. Alternatively, a text file specifying only the cell constants and space group number can be used. In this case the file should contain that information in the following order:</p> <pre><code>a b c alpha beta gamma space_group_number </code></pre> <p>The exact formatting of this file is not critical. An example of appropriate contents of the text file for a cell in space group C2 is:</p> <pre><code>40.76 18.49 22.33 90 90.61 90 4 </code></pre> <p>All 230 space groups are available for use in the program, in their standard settings. (For rhombohedral space groups, the hexagonal setting is expected, and your data need to be indexed accordingly.)</p> <p>The second file on the command line should be a standard PDB format file containing the search model. Any lines in this input file that are not ATOM or HETATM records are ignored. The program expects correctly formatted PDB ATOM records. If element symbols are not present in columns 77-78, the atom type can usually be inferred correctly from the atom name, but the names of atoms with two-letter element symbols (<em>e.g.</em>, Fe, Ca, Se) should be appropriately left-shifted to ensure they are correctly recognized. If the PDB file contains CNS-style segment identifiers in columns 73 to 76, these will be used to subdivide the search model during the final rigid-body refinement. Each of these segments will be optimized independently during that step.</p> <p>If the first file on the command line is a Scalepack or an MTZ file, and you also want to use it as the source of your reflection data, it is not necessary to provide a third input file on the command line. For Scalepack files, the program expects a <em>.sca</em> file with the final, merged reflection intensities (with Bijvoet pairs either combined or preserved as separate I+ and I-). For MTZ files, the data column to use for the Fobs or intensity data can be specified on the command line using the <em>-Z</em> option. Otherwise, the program will read the data from any column labeled “F”, “FP”, “FNAT”, &ldquo;I&rdquo; or &ldquo;IMEAN&rdquo; or from the first column with a label beginning with “F_” or “FP_” or &ldquo;I_&rdquo;. If no such column is present, the first data column in the MTZ file with an appropriate data type will be used.</p> <p>If you want to provide the reflection data separately from the unit cell and space group information, a third input file can be specified, which must be a Scalepack file, MTZ or a simple text file containing the observed structure factors. The only requirement for the text file is that H, K, L, and Fobs are the first four items on each line, separated by spaces or tabs.</p> <p>The command line:</p> <pre><code>epmr example.sca example.pdb </code></pre> <p>or:</p> <pre><code>epmr example.mtz example.pdb </code></pre> <p>or:</p> <pre><code>epmr example.cell example.pdb example.hkl </code></pre> <p>will run the program in its default mode. In this case, the program will look for a single copy of the search molecule in the asymmetric unit. It will run the evolutionary search procedure twenty times. Data in the resolution range between 80 and 3 Ångstroms will be used in the search. Each of the 20 solutions found will be written to a file named *epmr.*<strong><em>N</em></strong><em>.pdb</em>, where <strong>N</strong> is the sequential attempt number.</p> <p>If you wish to provide multiple search models, put the list of file names in a text file, and supply that file to the program in place of a coordinate file, with a “@” symbol before it:</p> <pre><code>epmr example.mtz @example.filelist </code></pre> <p>If you provide a file list in this way, it is important to keep in mind that the complete path to the files from your working directory is required. It is recommended to specify the full, absolute path to each file so your file list is not dependent on the directory in which it is used.</p> <p>A single search model can be read from the standard input by using a “-” (dash) in place of the coordinate file name on the command line:</p> <pre><code>epmr example.cell - example.hkl &lt;example.pdb &gt;example.log </code></pre> <p>When the program is started, it will print some information about the input data and program settings, do the initial FFT structure factor calculation, and then start the optimization runs. At the end of each evolutionary search, a local, rigid-body refinement is performed on the result.</p> <p>The final orientation for each run will be reported on a line that begins with the word “Solution” followed by the run number, correlation coefficient, R-factor, rotation angles (alpha, beta, gamma as defined for the CCP4 programs), translation (in fractional coordinates for the model after it has been centered at the origin), the model number and space group. In most cases, a solution will be transformed through symmetry and/or alternate origins so that it lies as close as possible to the origin. (More limited transformation is done when static structure has been applied or if only a local search is done.) Thus if the same solution is found by more than one optimization attempt, nearly identical rotation angles and translations will be reported, with no transformations necessary to compare solutions. If you intend to make use of the rotation and translation values outside of the program, they must be applied to the original search model after it has been moved so that its centroid is at the origin.</p> <p>You can use the Linux/UNIX command:</p> <pre><code>grep Solution epmr.log </code></pre> <p>to view just the solutions. On UNIX-like systems, the command:</p> <pre><code>grep Solution epmr.log | sort -n -k 3r,3 -k 4 </code></pre> <p>will list the solutions sorted by correlation coefficient, then R-factor.</p> <p>The output coordinates are written in standard PDB format. The TITLE record includes the correlation coefficient, R-factor and number of clashes. A CRYST1 record is included. The original atom information from the input coordinates, such as chain identifiers and residue numbers, is retained in the output coordinates except when a search is done using multiple search models in an &ldquo;assembly&rdquo; (-a or -A options) or when a search is done for multiple copies of the search model (-m or -M options). In those cases, new chain identifiers are assigned, one for each &ldquo;piece&rdquo; of the assembly or copy of the search model, to make it easier to identify the separate components. Only ATOM or HETATM records from the input coordinates are stored and written to the output files. All other lines are ignored.</p> <h2 id="options">Options</h2> <p>The operation of the program is controlled by a set of command line options. (If the program is run without any command line arguments, a brief summary of the available options will be listed.) The possible options are:</p> <p><strong>-A</strong> Treat search models as an <strong>assembly</strong>, search with all simultaneously</p> <p>This option is off by default. It causes each input model to be treated as an independently positioned and oriented segment of the complete search model. (By default, each input model is treated as an entirely separate, alternative search model.) When this option is turned on, the program will attempt to optimize the orientation and position of all search models simultaneously.</p> <p>This is an experimental option. It is primarily useful when the individual segments that comprise the assembly would be too small to be effective when trying to build the solution incrementally using the -a option.</p> <p><strong>-a</strong> Treat models as an <strong>assembly</strong>, search with each sequentially</p> <p>This option is off by default. It causes each input model to be treated as an independently positioned and oriented segment of the complete search model. (By default, each input model is treated as an entirely separate, alternative search model.) When this option is turned on, the program will find the optimal solution for the first model, keep that as static structure, search for the optimal solution for the next model, store that as static structure, and so on.</p> <p>Both this option and the “-A” option can be combined with “-m” or “-M” to search for multiple copies of an assembly.</p> <p><strong>-C</strong> Search simultaneously over all space groups in the same point group and <strong>crystal</strong> class as the input space group</p> <p>This option is off by default. The space group is treated as an additional variable in the evolutionary search (i.e., the alternative space groups compete with each other during the evolution). This option works well for routine molecular replacement calculations with a good search model. For difficult cases, it is safer to use the “–c” (lowercase) option instead, which will search each of the candidate space groups separately.</p> <p><strong>-c</strong> Search sequentially over all space groups in the same point group and <strong>crystal</strong> class as the input space group</p> <p>This option is off by default. Each space group is tried in turn. The number of optimization runs specified by the “–n” option will be completed for each space group choice, and searches will be done for all copies of all input models in a space group before moving to the next.</p> <p><strong>-e integer</strong> Set the <strong>seed</strong> value for the random number generator to a specific value</p> <p>By default (or if the seed value is set to a value of zero using this option), the seed is generated from random system information at run time. Explicitly setting the seed value is not necessary for normal operation of the program, but can be useful for testing purposes and allows you to reproduce a previous run. Two separate runs of the program that use the same seed value will produce identical results.</p> <p><strong>-g integer</strong> The number of <strong>“generations”</strong> (cycles of optimization)</p> <p>The default value is 50. It is not normally necessary (or recommended) to change this value. However, setting this value to zero (-g0) will bypass the evolutionary search and feed your input model directly to the local optimizer. This allows you to use EPMR as a convenient rigid-body refinement program.</p> <p><strong>-h number</strong> <strong>High</strong> resolution limit for diffraction data used in the search (in angstroms)</p> <p>The default value is 3.0 Å. Although it can be useful to try different high-resolution limits, the search efficiency is generally higher if data to 3.0 are included. It is rarely effective to set this to a value greater than 5.0.</p> <p><strong>-l number</strong> <strong>Low</strong> resolution limit for diffraction data (Ångstroms).</p> <p>The default value is 80.0 Å, which generally results in no data being excluded. MR calculations can be highly sensitive to the inclusion or exclusion of the lowest resolution data, and also to the accuracy of that data. For EPMR it is highly recommended to include all low resolution data. In some cases, however, poorly measured low-resolution data can negatively impact the search. If you are having problems, you could try excluding the lowest resolution data using this option with, for instance, a low-resolution limit of 15 Å.</p> <p><strong>-M integer</strong> The number of copies of the <strong>molecule</strong> in the asymmetric unit to find simultaneously</p> <p>The default value is 1. Values greater than one cause multiple orientations and positions to be optimized for the search model.</p> <p>This option is primarily useful when there is a large number of molecules in the asymmetric unit. In other cases an incremental search for multiple molecules (option -m) is typically more effective.</p> <p><strong>-m integer</strong> The number of copies of the <strong>molecule</strong> in the asymmetric unit to find sequentially</p> <p>The default value is 1. A value of 2 would cause the program to search for one copy of the molecule, save the solution as partial structure and continue searching for a second solution.</p> <p><strong>-n integer</strong> The <strong>number</strong> of independent optimization attempts</p> <p>The default value is 20, which is intended for moderately difficult cases. For some very difficult MR problems, values of 100 or more are worth trying.</p> <p><strong>-o name</strong> The file name prefix for the <strong>output</strong> coordinate files</p> <p>The default is “epmr”. If you run multiple jobs in the same directory, you will have to use this flag to avoid writing over files from other runs. If you specify “-” (a dash) as the file name prefix, the coordinates will be written to the standard output of the program instead of a separate file.</p> <p>If you specify the option &ldquo;-w1&rdquo;, the coordinate file containing the top solution from all runs will be named <strong><em>prefix</em></strong><em>.best.pdb</em>. If you specify the command line option “-w2”, the program will name the output file for each optimization attempt as <strong><em>prefix.N</em></strong>.<em>pdb</em> (<em>e.g.</em>, epmr.1.pdb). If you are searching sequentially over multiple space groups, search models, and/or copies in the asymmetric unit, the file name will have additional numeric indicators for those (<em>e.g.</em>, <em>epmr.3.4.2.5.pdb</em> would indicate the third space group choice, fourth model, second copy, fifth optimization attempt).</p> <p><strong>-p integer</strong> The <strong>population</strong> size (number of trial solutions evaluated in each cycle of optimization)</p> <p>The default value is 300. Increasing this value beyond 300 will increase the search efficiency, but you will get more benefit from increasing the number of optimization attempts (-n) instead.</p> <p><strong>-R</strong> <strong>Rotation</strong> search only</p> <p>This option is off by default. It will cause the program to search only rotation space, keeping the position of the search model unchanged.</p> <p><strong>-S</strong> Try all <strong>search</strong> models simultaneously</p> <p>This option is off by default. The choice of the model becomes an additional variable in the evolutionary search. This is an experimental option still under development.</p> <p><strong>-s filename</strong> Read <strong>static</strong> structure from the specified file</p> <p>If you have partial structure to input, include this flag and follow it with the name of the PDB file containing the correctly positioned partial structure. You can separate the partial structure into as many files as you wish and use this flag multiple times on the command line.</p> <p><strong>-T</strong> <strong>Translation</strong> search only</p> <p>This option is off by default. It will cause the program to search only translation space, keeping the orientation of the search model unchanged. This could be useful, for instance, when you have a search model that has been pre-oriented by another program or through knowledge of non-crystallographic symmetry. Unlike in earlier versions of this program, the orientation is held fixed during final rigid-body optimization as well as during the evolutionary search.</p> <p><strong>-V</strong> Print <strong>version</strong> information and exit</p> <p><strong>-v integer</strong> The <strong>verbosity</strong>, which controls the amount of information written to the standard output of the program The default value is 1. A value of 0 (zero) results in nothing being written (except the coordinates, if they are written to the standard output using the option, “-o -”). A value of 2 causes more detailed information on the progress of the evolutionary search to be written.</p> <p><strong>-w integer</strong> The quantity of solutions you want to <strong>write</strong> out to PDB files</p> <p>The default value is 2. A value of 0 (zero) here results in no coordinates being written out. A value of 1 means only the top solution from all of the runs will be written out. A value of 2 means all solutions will be written out. (The -o flag controls the naming of the output PDB files.)</p> <p><strong>-Z label</strong> The label of the MT<strong>Z</strong> data column to use. The data column can contain either structure factor or intensity data.</p> <h2 id="acknowledgements">Acknowledgements</h2> <p>The original EPMR program was written by Chuck Kissinger and Dan Gehlhaar at Agouron Pharmaceuticals. David Fogel (Natural Selection, Inc.) contributed numerous ideas that were essential to the original development of the program. Bradley Smith (Agouron/Pfizer) was responsible for rewriting and improving the original program and testing numerous alternative algorithms and ideas. SGX Pharmaceuticals and Anadys Pharmaceuticals supported the development of the open-source version of this program.</p> <h2 id="references">References</h2> <ol> <li>Kissinger, CR, Gehlhaar, DK &amp; Fogel, DB, “Rapid automated molecular replacement by evolutionary search”, <em>Acta Crystallographica</em>, <strong>D55</strong>, 484-491 (1999).</li> <li>Kissinger, CR, Smith, BA, Gehlhaar, DK &amp; Bouzida, D, “Molecular replacement by evolutionary search”, <em>Acta Crystallographica</em>, <strong>D57</strong>, 1474-1479 (2001).</li> <li>Huber, R. &amp; Schneider, M., “A group refinement procedure in protein crystallography using Fourier transforms”, <em>J. Appl. Cryst.</em> <strong>18</strong>, 165-169 (1985).</li> </ol> <h2 id="examples">Examples</h2> <p><strong>Example 1</strong></p> <p>Use EPMR in default mode. Read reflection intensities, cell constants and space group from a Scalepack file. Read coordinates for a single search model from a PDB file. Search for one molecule in the asymmetric unit, perform 20 attempts of the evolutionary search procedure, and write out all 20 solutions found:</p> <pre><code>epmr intensities.sca search_model.pdb &gt; example.log </code></pre> <p><strong>Example 2</strong></p> <p>Do a translation search, using static partial structure and perform 50 optimization attempts. Use the data labeled &lsquo;F_NAT1&rsquo; in the MTZ file:</p> <pre><code>epmr -T -s static_model.pdb -n50 -Z F_NAT1 data.mtz search_model.pdb &gt; example.log </code></pre> <p><strong>Example 3</strong></p> <p>Search for one molecule in the asymmetric unit (default), use data from 20 to 2.5 Å, do fifty runs, write out the solution found in each attempt to a file with the prefix <em>example_solution</em>. Read the cell constants and space group from a text file, read the reflections from a free-format file containing h, k, l, Fo and use static structure:</p> <pre><code>epmr -l 20 -h 2.5 -s partial.pdb -w2 -o example_solution -n 50 example.cell example.pdb example.hkl &gt; example.log </code></pre> <p><strong>Example 4</strong></p> <p>Search sequentially for three identical molecules in the asymmetric unit, write out just the top scoring solution from all attempts after 20 attempts (default) for each of three copies of the search molecule. Input two fragments of partial structure:</p> <pre><code>epmr -m3 -w1 -s partial1.pdb -s partial2.pdb example.cell example.pdb example.hkl &gt; example.log </code></pre> <p><strong>Example 5</strong></p> <p>Do a rigid-body refinement of a molecule:</p> <pre><code>epmr -g0 example.sca example.pdb &gt; example.log </code></pre> <p><strong>Example 6</strong></p> <p>Use EPMR in a program pipeline. The search model is read from the output of the mythical program <em>search_model_generator</em> and the solution coordinates are written to the input of <em>solution_evaluator</em>. Cell and reflection data are read from an MTZ file. Do 100 optimization attempts, writing the coordinates for each solution found to the standard output. No log file information is written:</p> <pre><code>search_model_generator | epmr -o- -v0 -n100 example.mtz - | solution_evaluator </code></pre>