You are here

De novo water predictions using SPaDES

2 posts / 0 new
Last post
De novo water predictions using SPaDES

Hello everyone,

I study proteins in solution, using mainly small angle X-ray scattering (SAXS). SAXS gives us low-resolution information about the protein structure compared to MX, but allows for investigations of proteins with flexible domains or flexible linker regions. One complication of modeling SAXS data is, however, that one not only needs to calculate the signal from the protein, but also from the hydration shell of the protein. Historically, the hydration shell has been modelled as a continuous envelope around the protein 3-5 Å wide with an excess (electron) density of 10%. This is being challenged now (see e.g., and there are now also programs that adds explicit waters (

Not being 100% satisfied with simply adding discrete waters uniformly across the protein surface, I have been looking into other ways to add/model the hydration shell. One method is to use quick MD simulations, but this approach is only really possible if one works with rigid proteins – to model flexible proteins, one needs to calculate the scattering from thousands of potential structures. I would die if I had to setup up thousands of MD simulations (and I cannot just pull the confomations from a single trajectory).

I find the SPaDES (Structure Prediction and Design with Explicit Solvent) approach very interesting ( While I understand the program/algorithm was designed for other purposes, I do think it could also be used for better modelling the hydration shell observed with SAXS. Unlike the typical SAXS approaches, it includes an energy scoring so that waters are not just distributed uniformly. At the same time, it is much faster than MD simulations, making in feasible (hopefully) to predict water molecules on a few thousand models.

I have looked on the demos webpage ( to see if there are any demonstrations on how to use SPaDES for de novo water predictions, but I have not be able to find any. Can any of you point me towards any guides on how to setup up SPaDES?

Kind regards,


Post Situation: 
Mon, 2019-03-25 07:53

I wanted to give it a go for a misbehaving protein-protein interface and I found out the following —I know this post is over a year old, but someone else may be looking for info.

The SPADES protocol is called `hydrate/SPADES` in `rosetta/main/documentation/`. So hydrate must be SPADES...

Hydrate appears in pyrosetta as a module in protocols with a class with several functions.

The class is a mover, but does not have a citation ref associated with it so I cannot verify SPADES == hydrate:

def get_citation(mover) -> str:
    ci = mover.provide_citation_info()
    if len(ci) == 0:
        return ''
        cc = ed.provide_citation_info().pop()
        #print(cc.module_name(), cc.module_type())
        buffer = pyrosetta.rosetta.std.stringbuf()
        return buffer.str().strip()
Hydrate = pyrosetta.rosetta.protocols.hydrate.Hydrate

But it is the only module to do with hydration and its functionality is the same. So SPADES must be hydrate.

EDIT — I forgot to just check that the authors matched in the source files with the paper ones. And they do. So hydrate is SPaDES.


The wiki documentation is lacking, but there is a solid amount of info in places.

Firstly, there are two folders in `rosetta/main/tests/integration/tests`, one called hydrate, the other hydrate relax.

One runs the binary `hydrate` and the other (`hydrate_relax`) runs relax. The former accepts a resfile, so is a packer.
The commands have some interesting flags —which basically explain the basic usage— and require a "hyfile", which is a list of HYD and numbers.

In terms of the many functions (which appear in pyrosetta), these are well documented in the header file `` in `rosetta/main/source/src/protocols/hydrate` as comments above each function —My utterly clueless guess is that they did not go into the documentation of pyrosetta as they lack the @brief tag. In the case of `read_hyfile`, it explains what a hyfile is:

// Read hyfile;
// Hyfile should be a list with two columns:
// 1st with one of the keywords:
//  "HYD" to hydrate that residue (only residues)
//  "ENF" to enforce that water molecule, to ensure it will be present at the end of the simulation (only water molecules)
// 2nd with the residue or water molecule number


Tue, 2020-08-04 09:30