Disulfid Bond Evaluation¶
When calculating the pairwise interaction energy between two rotamers building
a disulfid bond, one would get an unfavourable energy due to “clashes” between
the sulfur atoms. It is possible to improve performance in sidechain
reconstruction regarding cysteins when finding and separately handle
disulfid bonds. The scoring module implements an empirically derived disulfid
score (promod3.scoring.SCWRL3DisulfidScore()
) as defined in
[canutescu2003b]. The paper proposes two rotamers to be in a disulfid
bonded state, if the resulting disulfid score plus the self energies of the
involved rotamers is below 45. If there are several cysteines close together,
this problem gets another layer of complexity. One has to assure, that
every cysteine only participates in one disulfid bond but the network
of disulfid bonds is geometrically optimal. SCWRL4 proposes an approach,
that has also been implemented here.
- promod3.sidechain.DisulfidScore(rotamer_one, rotamer_two, ca_pos_one, cb_pos_one, ca_pos_two, cb_pos_two)¶
Directly extracts the positions of the gamma sulfurs from the rotamers by searching for particles with the name “SG”. The found positions are then passed to
promod3.scoring.SCWRL3DisulfidScore()
. In case ofRRMRotamer
it expects exactly one gamma sulfur per rotamer. In case ofFRMRotamer
there can be an arbitrary number of gamma sulfurs per rotamer (at least one), it then evaluates the score for all possible combinations of gamma sulfurs and takes the minimum score. To get a final DisulfidScore, it finally adds the self energies of the rotamers to the result of the geometric expression.- Parameters:
rotamer_one (
RRMRotamer
,FRMRotamer
) – First rotamerrotamer_two (
RRMRotamer
,FRMRotamer
) – Second rotamerca_pos_one (
ost.geom.Vec3
) – CA position of first rotamercb_pos_one (
ost.geom.Vec3
) – CB position of first rotamerca_pos_two (
ost.geom.Vec3
) – CA position of second rotamercb_pos_two (
ost.geom.Vec3
) – CB position of second rotamer
- Raises:
RuntimeError
if given rotamers do not contain exactly (in case ofRRMRotamer
) or at least (in case ofFRMRotamer
) one particle representing the gamma sulfur.- Returns:
The result of the raw score plus the average self energies of the input rotamers
- promod3.sidechain.ResolveCysteins(rotamer_groups, ca_positions, cb_positions[, score_threshold=45.0, optimize_subrotamers=False])¶
Tries to optimize disulfid bond network. In a first step, all disulfid bonds get detected using
DisulfidScore()
. If the value between two rotamers is below score_threshold, they’re assumed to be bonded. The function then tries to detect the largest possible set of disulfide bonds, with no cysteine being part of more than one bond. If several largest sets are possible, the one with the optimal sum of scores gets estimated.- Parameters:
rotamer_groups (
list
ofFRMRotamerGroup
/RRMRotamerGroup
) – Every group represents a cysteineca_positions (
list
ofost.geom.Vec3
) – The CA positions of the according rotamerscb_positions (
list
ofost.geom.Vec3
) – The CB positions of the according rotamersscore_threshold (
float
) – The score two rotamers must have to be considered as a disulfid bondoptimize_subrotamers (
bool
) – If set to true and the input consists of flexible rotamer groups, the active subrotamers get optimized. For every pair of rotamers participating in a disulfid bond, the subrotamers with bestDisulfidScore()
get activated in the input rotamer_groups. This has an effect when the rotamers get applied on residues.
- Returns:
A
tuple
containing twolist
objects with equal length. Both lists containtuple
objects with two elements. The tuples in the first list describe the indices of cysteins participating in disulfid bonds. The tuples in the second list describe the optimal rotamers in the according rotamer groups.