Rosetta Core  2015.22
Functions
core::pose::carbohydrates Namespace Reference

Functions

core::uint find_seqpos_of_saccharides_parent_residue (conformation::Residue const &residue)
 Use a saccharide residue's connections to find the residue from which it follows or branches. More...
 
std::pair
< conformation::ResidueCOP,
conformation::ResidueCOP
get_glycosidic_bond_residues (Pose const &pose, uint const sequence_position)
 Return pointers to the two residues of the glycosidic bond. More...
 
core::uint atom_next_to_connect_atom (conformation::Residue const &residue, core::uint const connect_atom_index)
 Scan through the list of atoms connected to a given "connect_atom" and return the first heavy atom found. More...
 
utility::vector1< id::AtomIDget_reference_atoms_for_phi (Pose const &pose, uint const sequence_position)
 Return the AtomIDs of the four phi torsion reference atoms. More...
 
utility::vector1< id::AtomIDget_reference_atoms_for_psi (Pose const &pose, uint const sequence_position)
 Return the AtomIDs of the four psi torsion reference atoms. More...
 
utility::vector1< id::AtomIDget_reference_atoms_for_1st_omega (Pose const &pose, uint const sequence_position)
 Return the AtomIDs of the four omega torsion reference atoms. More...
 
utility::vector1< id::AtomIDget_reference_atoms (uint const torsion_id, Pose const &pose, uint const sequence_position)
 Return the AtomIDs of the four reference atoms for the requested torsion. More...
 
void align_virtual_atoms_in_carbohydrate_residue (conformation::Conformation &conf, uint const sequence_position)
 Set coordinates of virtual atoms (used as angle reference points) within a saccharide residue of the given conformation. More...
 
void align_virtual_atoms_in_carbohydrate_residue (Pose &pose, uint const sequence_position)
 Set coordinates of virtual atoms (used as angle reference points) within a saccharide residue of the given pose. More...
 
bool is_phi_torsion (Pose const &pose, id::TorsionID const &torsion_id)
 Is this is the phi torsion angle of a glycosidic linkage? More...
 
bool is_psi_torsion (Pose const &pose, id::TorsionID const &torsion_id)
 Is this is the psi torsion angle of a glycosidic linkage? More...
 
bool is_omega_torsion (Pose const &pose, id::TorsionID const &torsion_id)
 Is this is an omega torsion angle of a glycosidic linkage? More...
 
core::Angle get_glycosidic_torsion (uint const torsion_id, Pose const &pose, uint const sequence_position)
 Return the requested torsion angle between a saccharide residue of the given pose and the previous residue. More...
 
void set_glycosidic_torsion (uint const torsion_id, Pose &pose, uint const sequence_position, core::Angle const setting)
 Set the requested torsion angle between a saccharide residue of the given pose and the previous residue. More...
 

Function Documentation

void core::pose::carbohydrates::align_virtual_atoms_in_carbohydrate_residue ( conformation::Conformation conf,
uint const  sequence_position 
)

Set coordinates of virtual atoms (used as angle reference points) within a saccharide residue of the given conformation.

This method aligns virtual atom VOX, where X is the position of the cyclic oxygen, OY and HOY, where Y is the position of the anomeric carbon, (provided the residue is not the reducing end, where OY and HOY would be real atoms), and HOZ, where Z is the mainchain glycosidic bond location. OY and HOY are aligned with the last two "main chain" atoms of the parent residue. This ensures that torsion angles with duplicate names, e.g., chi1 and phi for internal linked aldoses, will always return the same values. The same concept applies for HOZ, which aligns with the anomeric carbon of the downstream residue. This method should be called after any coordinate change for a sac- charide residue and after loading a saccharide residue from a file or sequence for the first time.

Note
Do I need to worry about aligning the virtual atoms left over from modified sugar patches? Can such virtual atoms be deleted?

References atom_next_to_connect_atom(), find_seqpos_of_saccharides_parent_residue(), core::conformation::Residue::get_self_ptr(), core::conformation::Conformation::residue(), core::conformation::Conformation::set_xyz(), core::pose::TR(), x(), core::conformation::Conformation::xyz(), y(), and z().

Referenced by align_virtual_atoms_in_carbohydrate_residue(), core::import_pose::build_pose_as_is2(), set_glycosidic_torsion(), and core::pose::Pose::set_ring_conformation().

void core::pose::carbohydrates::align_virtual_atoms_in_carbohydrate_residue ( Pose &  pose,
uint const  sequence_position 
)

Set coordinates of virtual atoms (used as angle reference points) within a saccharide residue of the given pose.

References align_virtual_atoms_in_carbohydrate_residue(), and core::pose::Pose::conformation().

core::uint core::pose::carbohydrates::atom_next_to_connect_atom ( conformation::Residue const &  residue,
core::uint const  connect_atom_index 
)

Scan through the list of atoms connected to a given "connect_atom" and return the first heavy atom found.

Returns
The atom index of the 1st heavy atom next to the given "connect atom" or 0 no heavy atom is found

References core::conformation::Residue::atom_is_hydrogen(), and core::conformation::Residue::bonded_neighbor().

Referenced by align_virtual_atoms_in_carbohydrate_residue(), get_reference_atoms_for_1st_omega(), get_reference_atoms_for_phi(), and get_reference_atoms_for_psi().

core::uint core::pose::carbohydrates::find_seqpos_of_saccharides_parent_residue ( conformation::Residue const &  residue)
std::pair< conformation::ResidueCOP, conformation::ResidueCOP > core::pose::carbohydrates::get_glycosidic_bond_residues ( Pose const &  pose,
uint const  sequence_position 
)

Return pointers to the two residues of the glycosidic bond.

Returns
Pointers to the residue at <sequence_position> and its parent or else the same pointer twice if undefined.

References find_seqpos_of_saccharides_parent_residue(), core::conformation::Residue::get_self_ptr(), core::pose::Pose::residue(), and core::pose::TR().

Referenced by get_reference_atoms_for_1st_omega(), get_reference_atoms_for_phi(), and get_reference_atoms_for_psi().

core::Angle core::pose::carbohydrates::get_glycosidic_torsion ( uint const  torsion_id,
Pose const &  pose,
uint const  sequence_position 
)

Return the requested torsion angle between a saccharide residue of the given pose and the previous residue.

This method is used in place of Residue::mainchain_torsion() since the main-chain torsions of saccharide residues only make sense in the context of two residues. Moreover, the reference atoms as defined by the IUPAC are different from the ones that Rosetta uses by default for mainchain torsions for sugars.

Parameters
<torsion_id>is an integer representing the specific torsion angle requested, as defined in core/id/types.hh:
phi_torsion = 1
psi_torsion = 2
omega_torsion = 3
Note
I would rather the torsion id were an enum, but as it was already defined, I'm leaving it as a constant for now.

References core::pose::Pose::conformation(), get_reference_atoms(), principal_angle_degrees(), core::conformation::Conformation::torsion_angle(), and core::pose::TR().

Referenced by core::pose::Pose::omega(), core::pose::Pose::phi(), and core::pose::Pose::psi().

utility::vector1< id::AtomID > core::pose::carbohydrates::get_reference_atoms ( uint const  torsion_id,
Pose const &  pose,
uint const  sequence_position 
)
utility::vector1< id::AtomID > core::pose::carbohydrates::get_reference_atoms_for_1st_omega ( Pose const &  pose,
uint const  sequence_position 
)

Return the AtomIDs of the four omega torsion reference atoms.

For carbohydrates glycosylated at an exocyclic position, omega of residue n is defined as OX(n-1)-CX(n-1)-CX-1(n-1)-CX-2(n-1), where X is the position of the glycosidic linkage.

References atom_next_to_connect_atom(), get_glycosidic_bond_residues(), and core::pose::TR().

Referenced by get_reference_atoms().

utility::vector1< id::AtomID > core::pose::carbohydrates::get_reference_atoms_for_phi ( Pose const &  pose,
uint const  sequence_position 
)

Return the AtomIDs of the four phi torsion reference atoms.

For aldopyranoses, phi is defined as O5(n)-C1(n)-OX(n-1)-CX(n-1), where X is the position of the glycosidic linkage.
For aldofuranoses, phi is defined as O4(n)-C1(n)-OX(n-1)-CX(n-1).
For 2-ketopyranoses, phi is defined as O6(n)-C2(n)-OX(n-1)-CX(n-1).
For 2-ketofuranoses, phi is defined as O5(n)-C2(n)-OX(n-1)-CX(n-1).
Et cetera...

References atom_next_to_connect_atom(), get_glycosidic_bond_residues(), and core::pose::TR().

Referenced by get_reference_atoms().

utility::vector1< id::AtomID > core::pose::carbohydrates::get_reference_atoms_for_psi ( Pose const &  pose,
uint const  sequence_position 
)

Return the AtomIDs of the four psi torsion reference atoms.

For saccharides, psi is defined as: C(anomeric)(n)-OX(n-1)-CX(n-1)-CX-1(n-1),
where X is the position of the glycosidic linkage.

References atom_next_to_connect_atom(), get_glycosidic_bond_residues(), and core::pose::TR().

Referenced by get_reference_atoms().

bool core::pose::carbohydrates::is_omega_torsion ( Pose const &  pose,
id::TorsionID const &  torsion_id 
)

Is this is an omega torsion angle of a glycosidic linkage?

Carbohydrates linkages are defined as the torsion angles leading back to the previous residue. Much of Rosetta code relies on TorsionIDs and assumes TorsionID( n, BB, 3 ) is omega. For a sugar, omega (of the next residue) is the 3rd-to-last torsion, and the number of main-chain torsions varies per saccharide residue.

Remarks
Currently, this only works properly if there is a single omega and not yet for exocyclic branches either.

References core::id::BB, core::conformation::Residue::carbohydrate_info(), core::chemical::rna::CHI, debug_assert, core::conformation::Residue::is_carbohydrate(), core::conformation::Residue::is_upper_terminus(), core::conformation::Residue::n_mainchain_atoms(), core::pose::Pose::residue(), core::id::TorsionID::rsd(), core::id::TorsionID::torsion(), and core::id::TorsionID::type().

bool core::pose::carbohydrates::is_phi_torsion ( Pose const &  pose,
id::TorsionID const &  torsion_id 
)

Is this is the phi torsion angle of a glycosidic linkage?

Carbohydrate linkages are defined as the torsion angles leading back to the previous residue. Much of Rosetta code relies on TorsionIDs and assumes TorsionID( n, BB, 1 ) is phi. For a sugar, phi (of the next residue) is the last torsion, and the number of main-chain torsions varies per saccharide residue.

References core::id::BB, debug_assert, core::conformation::Residue::is_carbohydrate(), core::conformation::Residue::is_upper_terminus(), core::conformation::Residue::n_mainchain_atoms(), core::pose::Pose::residue(), core::id::TorsionID::rsd(), core::id::TorsionID::torsion(), and core::id::TorsionID::type().

Referenced by core::scoring::methods::carbohydrates::SugarBackboneEnergy::eval_residue_dof_derivative().

bool core::pose::carbohydrates::is_psi_torsion ( Pose const &  pose,
id::TorsionID const &  torsion_id 
)

Is this is the psi torsion angle of a glycosidic linkage?

Carbohydrates linkages are defined as the torsion angles leading back to the previous residue. Much of Rosetta code relies on TorsionIDs and assumes TorsionID( n, BB, 2 ) is psi. For a sugar, psi (of the next residue) is the penultimate torsion, and the number of main-chain torsions varies per saccharide residue.

References core::id::BB, core::conformation::Residue::carbohydrate_info(), core::chemical::rna::CHI, debug_assert, core::conformation::Residue::is_carbohydrate(), core::conformation::Residue::is_upper_terminus(), core::conformation::Residue::n_mainchain_atoms(), core::pose::Pose::residue(), core::id::TorsionID::rsd(), core::id::TorsionID::torsion(), and core::id::TorsionID::type().

Referenced by core::scoring::methods::carbohydrates::SugarBackboneEnergy::eval_residue_dof_derivative().

void core::pose::carbohydrates::set_glycosidic_torsion ( uint const  torsion_id,
Pose &  pose,
uint const  sequence_position,
core::Angle const  setting 
)

Set the requested torsion angle between a saccharide residue of the given pose and the previous residue.

This method is used in place of Conformation::set_torsion() since the reference atoms as defined by the IUPAC are different from the ones that Rosetta uses by default for main-chain torsions for sugars.

Parameters
<torsion_id>is an integer representing the specific torsion angle requested, as defined in core/id/types.hh:
phi_torsion = 1
psi_torsion = 2
omega_torsion = 3
<setting> is in degrees.
Note
I would rather the torsion id were an enum, but as it was already defined, I'm leaving it as a constant for now.

References align_virtual_atoms_in_carbohydrate_residue(), core::pose::Pose::conformation(), get_reference_atoms(), and core::conformation::Conformation::set_torsion_angle().

Referenced by core::pose::Pose::set_omega(), core::pose::Pose::set_phi(), and core::pose::Pose::set_psi().