Suns: The Structural Search Engine

Suns provides the missing search engine for the Protein Data Bank complete with a PyMOL interface:

  • Point and click within PyMOL to build search queries
  • Search for sophisticated all-atom motifs
  • PyMOL streams aligned search results into your session
  • Interactively build motifs using search results
  • Validate modeled or designed structures against real crystal structures

PyMOL Plugin

The easiest way to use Suns is through the PyMOL plugin. You can install this plugin in two ways:


Install using Plugin Manager

Download Plugin

If you have an old or non-incentive PyMOL installation that uses the old Plugin Manager then you may instead run this cross-platform Python-based Suns installer to add the Suns search plugin to PyMOL.

Install using Debian/Ubuntu Package

Download Package


Start PyMOL and load the structure for glucose binding protein (PDB ID: 2GBP). You can either:

Select the Plugin -> Suns Search menu option to open the search wizard, which lets you build and submit structural search queries:

Left-click a carboxyl group to select it and add it to your search query:

Suns pre-indexes chemical motifs from protein structures and the PyMOL search wizard automatically expands your selection to pre-indexed motifs, including:

Click "Search" to search for the carboxyl motif. The search wizard contacts the public search engine at and streams in aligned search results:

PyMOL uniquely colors each new result, but you can impose a uniform coloring by setting all carbons to green:

Some motifs match multiple residues. For example, the carboxyl search query will match carboxyls from both aspartate acid and glutamate.

Other motifs uniquely identify residues, such as linkers. Click on any search result's linker and the wizard will expand the selection to include the remainder of the side chain. The linker uniquely identifies the residue as aspartate or glutamate.

Suns saves search results that you add to your search query by renaming them to end with _save so that future searches don't delete them.

Click "Search" to search for the expanded selection. The new search will automatically delete old search results. To save them, you must copy them to a new object. You can also remove results manually at any time using "Clear Results".

The search engine will return several less-than-perfect matches since searches default to an RMSD cutoff of 1.0 Angstroms:

Use the "RMSD Cutoff" option to improve the result quality. Set the RMSD to 0.1 Angstroms and redo the search, which will considerably tighten up the linker:

You don't have to limit yourself to contiguous motifs. You can search for disconnected elements, too. Let's hide everything except aspartate and arginine to find a candidate salt bridge:

hide everything, not (resn arg or suns_query)
This reveals a cluster of arginines:

Pick any arginine's guanidinium group and loosen the search cutoff to 0.5 RMSD to search for geometrically similar salt bridges:

Search results only bring in a 15 Angstrom cube around the match, but sometimes we desire more context for a given search result. To pull in the original structure, just disable all selections except the desired result(s) and click "Fetch Full Contexts":

This will fetch the original structures from the Protein Data Bank and align them to their respective results:

Suns also supports backbone peptide searches. Reset the wizard by clicking:

Then type:

show all
Now select two consecutive peptide bonds from a helix and search with a cutoff of 0.3 Angstroms. The search results extend the initial query for several helical turns in each direction:

You can also search for residues V207 and V232 and include both the valine and backbone atoms in your search query: in the preferred surrounding backbone:

Searching at 0.4 Angstrom RMSD cutoff brings in an entire beta sheet worth of context:

Suns plays well with other PyMOL wizards, including the mutagenesis wizard. We can combine the two wizards to infer contextual preferences for different rotamers.

Use the mutagenesis wizard to rotate V232 counterclockwise and repeat the search:

The number of matches drops precipitously, indicating an unfavorable motif. You can use Suns as a crude measure of the quality of modeled or designed protein motifs.

Command Line Client

suns-cmd is a command line client to the Suns protein search engine. Use suns-cmd to automate searches for scripting purposes.


You can install the command line client from the following source package:

Download suns-cmd source

To install the source package, first install the Haskell Platform.

$ cabal update
$ cabal install

Quick Start

To use suns-cmd, just create a directory to store the results:

$ mkdir results

... and feed in the motif to search to the program's standard input. This source package provides example motifs in the test/ subdirectory:

$ ~/.cabal/bin/suns-cmd -d results/ -r 0.2 < test/figure2/search1.pdb

The -d parameter tells the program to store all results in the results/ directory:

$ ls results
1tqg_0.pdb   1v7w_2.pdb  2fr5_1.pdb  3a6r_0.pdb   3cuz_1.pdb  3fke_0.pdb
1tqg_1.pdb   1v7w_3.pdb  2fr5_2.pdb  3a6r_1.pdb   3cuz_2.pdb  3fke_1.pdb

Each result is labeled by the structure name followed by a number which distinguishes results originating from the same structure. These results are already aligned to the original search query.

This program also accepts the following options:

suns-cmd: The Suns search command line client

Usage: suns-cmd [--hostname STRING] [-r|--rmsd DOUBLE] [-n|--num INT] [-s|--seed INT] [-d|--directory FILEPATH]
  Send search requests and store results as PDB files

Available options:
  -h,--help                Show this help text
  --hostname STRING        Search engine address (default:
  -r,--rmsd DOUBLE         RMSD cutoff (default: 1.0)
  -n,--num INT             Number of results (default: 100)
  -s,--seed INT            Randomization seed (default: 0)
  -d,--directory FILEPATH  Results directory (default: ./)

Report bugs to

Search Engine

The public Suns server at imposes three limitations in order to handle a high search volume:

If you set up your own local search engine, you can bypass these limitations, allowing you to:

For instructions on how to do this, download the source package at and follow the instructions to build and customize your own local search engine.


To report bugs, request features, or ask for support, contact the official mailing list at