[cmview-devel] Scoring functions

Henning Stehr stehr at molgen.mpg.de
Wed Apr 21 11:48:27 EDT 2010

Matthias had the idea to define an interface for contact based scoring
functions such that new scoring functions can easily be added to
CMView. This would be very useful for ab-initio modelling and
refinement and to standardize things already implemented.

Below you can see what I (in my role as architecture astronaut) think
such an interface ScoringFunction should look like.

A scoring function could be based on the sequence (like a contact type
potential), contact map (like a contact count potential) or 3D
structure (like a geometric potential).

In CMView, the score would be displayed as an overlay similar to the
way distance map or contact density are currently shown. One could
also add functions for refinement/editing based on the scores. Some
similar functionality is already implemented for DeltaRank scoring.

For a start, it should be relatively easy to implement the scoring
functions described in:

Dan M Bolser, Ioannis Filippis, Henning Stehr, Jose Duarte and Michael Lappe.
Residue contact-count potentials are as effective as residue-residue
contact-type potentials for ranking protein decoys (2008).
BMC Structural Biology 2008, 8:53: doi:10.1186/1472-6807-8-53

In addition, we are currently working on two novel scoring functions
DeltaRank and GMBP which are still unpublished. It will still take
some time until they can be incorporated in such a way that they can
be used by external users.

As said before, these are only ideas so far but it seems to make sense
to still include this in CMView 2.0.

I'm posting this here for different reasons:
- as my online notebook so I won't forget
- to put this out for discussion and get feedback from other astronauts
- so that someone who feels the urge can start implementing something
- to promote the open source spirit of the project

Happy hacking,


interface ScoringFunction {

* Initializes the ScoringFunction object with the data that the
scoring can potentially be based on.
public void init(sequence, contacts, coordinates);

* Notifies the ScoringFunction object that the underlying data has
changed and scores have to be recalculated
public void updateData(sequence, contacts, coordinates);

* Returns the normalized score for contact (i,j). If (i,j) is not
really a contact, should
* returns the score assuming that it was a contact.
public double getScore(i,j);

* Returns a score for the whole contact map, as it would be used for
decoy scoring.
* This can be simply the sum of individual scores or something more complex.
public double getOverallScore();

* Returns a summed score for the current set of selected contacts.
Similar to above.
* Not sure if this is very useful but could be used to find good/bad regions.
public double getScoreForSelection(selected_contacts);


More information about the cmview-devel mailing list