diff --git a/modelling/pymod/_pipeline.py b/modelling/pymod/_pipeline.py index fdea48505c30f4bb49832cd1182c89babe04acd0..d68c6ddf00b33ef137cf9553ffec13d66547c11c 100644 --- a/modelling/pymod/_pipeline.py +++ b/modelling/pymod/_pipeline.py @@ -164,7 +164,8 @@ def _GetSimEntity(sim): def BuildSidechains(mhandle, merge_distance=4, fragment_db=None, - structure_db=None, torsion_sampler=None): + structure_db=None, torsion_sampler=None, + rotamer_library=None): '''Build sidechains for model. This is a wrapper for :func:`promod3.modelling.ReconstructSidechains`, @@ -190,10 +191,16 @@ def BuildSidechains(mhandle, merge_distance=4, fragment_db=None, if ring punches are found. A default one is loaded if None. :type torsion_sampler: :class:`~promod3.loop.TorsionSampler` + :param rotamer_library: Used as parameter for + :func:`modelling.ReconstructSidechains`, a default + one is loaded if None. + :type rotamer_library: :class:`~promod3.sidechain.RotamerLib` or + :class:`~promod3.sidechain.BBDepRotamerLib` ''' prof = core.StaticRuntimeProfiler.StartScoped('pipeline::BuildSidechains') ost.LogInfo("Rebuilding sidechains.") - ReconstructSidechains(mhandle.model, keep_sidechains=True) + ReconstructSidechains(mhandle.model, keep_sidechains=True, + rotamer_library=rotamer_library) # check for ring punches rings = GetRings(mhandle.model) ring_punches = GetRingPunches(rings, mhandle.model) @@ -221,7 +228,8 @@ def BuildSidechains(mhandle, merge_distance=4, fragment_db=None, FillLoopsByDatabase(mhandle, fragment_db, structure_db, torsion_sampler, ring_punch_detection=2) # re-build sidechains - ReconstructSidechains(mhandle.model, keep_sidechains=True) + ReconstructSidechains(mhandle.model, keep_sidechains=True, + rotamer_library=rotamer_library) # restore gaps mhandle.gaps = StructuralGapList() for g in old_gaps: @@ -459,6 +467,7 @@ def BuildFromRawModel(mhandle, use_amber_ff=False, extra_force_fields=list()): fragment_db = loop.LoadFragDB() structure_db = loop.LoadStructureDB() torsion_sampler = loop.LoadTorsionSamplerCoil() + rotamer_library = sidechain.LoadDunbrackLib() merge_distance = 4 # remove terminal gaps @@ -471,7 +480,7 @@ def BuildFromRawModel(mhandle, use_amber_ff=False, extra_force_fields=list()): # build sidechains BuildSidechains(mhandle, merge_distance, fragment_db, - structure_db, torsion_sampler) + structure_db, torsion_sampler, rotamer_library) # minimize energy of final model using molecular mechanics MinimizeModelEnergy(mhandle, use_amber_ff=use_amber_ff,