Nucleic acids#

Score DNA or RNA and repack selected bases.

Canonical DNA and RNA use the same PoseStack and score-function interfaces as proteins. Load a Biotite structure with the default parameter database, then build the score function from that same database:

from tmol.database import ParameterDatabase
from tmol.io import pose_stack_from_biotite
from tmol.score import beta2016_score_function

param_db = ParameterDatabase.get_default()
pose_stack = pose_stack_from_biotite(structure, device, param_db=param_db)
sfxn = beta2016_score_function(device, param_db=param_db)
scores = sfxn.render_whole_pose_scoring_module(pose_stack)(pose_stack.coords)

The beta2016-style preset includes the combined nucleic-acid torsion model, ordinary all-atom nonbonded terms, and nucleic-acid cartbonded parameters.

Repack selected bases#

Use NaChiRotamerSampler with an explicit block mask:

from tmol.pack import pack_rotamers
from tmol.pack import PackerPalette, PackerTask
from tmol.pack.rotamer import IncludeCurrentSampler
from tmol.pack.rotamer import NaChiRotamerSampler

task = PackerTask(pose_stack, PackerPalette())
task.restrict_to_repacking()
task.disable_packing_by_block_mask(~selected_na_blocks)
task.add_conformer_sampler(
    NaChiRotamerSampler.from_database(
        param_db, device, chi_sample_level=1, sample_syn=True
    )
)
task.add_conformer_sampler(IncludeCurrentSampler())
packed = pack_rotamers(pose_stack, sfxn, task)

This sampler changes glycosidic chi and configured hydroxyl proton chis. It reads sugar pucker from the input but does not sample pucker. Because this task is restricted to repacking, it also does not change base identity.

For protein–DNA or RNA–ligand systems, keep block masks explicit. If ligand preparation extends the parameter database, build both the pose and score function from the returned context. Generic Cartesian or kinematic minimization can follow packing; select its movable atoms separately.

Examples and reference#

DNA/RNA tutorial · Packing · Scoring API