Пример #1
0
def repack_and_minimize_mutant(pose,
                               task_factory,
                               move_map,
                               score_function,
                               rounds=3):
    #Copying the pose
    ram_pose = pr.Pose(pose)

    #preparing repack and applying
    prm = PackRotamersMover()
    prm.score_function(score_function)
    prm.task_factory(task_factory)

    #preparing minimize and applying
    min_mover = MinMover()
    min_mover.movemap(move_map)
    min_mover.score_function(score_function)

    print_out("Checking Packertask")
    packer = task_factory.create_task_and_apply_taskoperations(pose)
    print_out("packer task")
    print_out(packer)
    for rnd in range(rounds):
        print_out("round " + str(rnd + 1) + " of repack and min")
        prm.apply(ram_pose)
        min_mover.apply(ram_pose)
    return ram_pose
Пример #2
0
def make_point_changes(pose, task_factory, score_function):
    """
    Applies point mutations to a given pose. This is done through a 
    PackRotamersMover, followed by minimization.
    Inputs are a Pose, a TaskFactory, and a ScoreFunction
    """
    # Make PackRotamersMover
    pack_rotamers = PackRotamersMover()
    pack_rotamers.score_function(score_function)
    pack_rotamers.task_factory(task_factory)

    # Make a copy Pose and apply the PackRotamersMover
    mutated_pose = pr.Pose(pose)
    pack_rotamers.apply(mutated_pose)

    # Set up fixed-backbone movemap for minimization
    movemap = pr.MoveMap()
    movemap.set_bb(True)
    movemap.set_chi(True)
    movemap.set_jump(True)

    # Create the MinMover
    min_mover = MinMover()
    min_mover.movemap(movemap)
    min_mover.score_function(score_function)

    # Apply the MinMover to the modified Pose
    min_mover.apply(mutated_pose)

    return mutated_pose
Пример #3
0
def vanillaMinimizationMovers(cleanPDBName, outname, iterations = 100):
    #try using teh default movers for a set number of iterations
    print ("vanilla relax")
    pose = pose_from_pdb(cleanPDBName)
    min_mover = MinMover()
    movemapDefault = MoveMap() #standard move map
    scorefxn = get_fa_scorefxn() #standard fa score function
    min_mover.movemap(movemapDefault)
    min_mover.score_function(scorefxn)
    for i in range(0, iterations):
        min_mover.apply(pose)
    pose.dump_pdb(outname)
    return scorefxn(pose)
Пример #4
0
def make_min_mover(scorefxn, movemap):
    min_mover = MinMover()
    min_mover.movemap(movemap)
    min_mover.score_function(scorefxn)

    return min_mover
ccst2 = DihedralConstraint(c_ca, n_ca, x_n, x_ca, chf2)
ccst3 = DihedralConstraint(n_ca, x_n, x_ca, x_c, chf3)
#ccst4 = DihedralConstraint(n_ca, x_c, x_ca, x_n, chf3)
#constratint_set = [dcst1, dcst2, acst1, acst2, ccst1, ccst2, ccst3, ccst4]
constratint_set = [dcst, acst1, acst2, ccst1, ccst2, ccst3]
for c in constratint_set:
    loop.add_constraint(c)
sf = create_score_function('ref2015_cst')
mm = MoveMap()
mm.set_jump(True)
mm.set_bb(False)
mm.set_chi(False)
minmov = MinMover()
minmov.score_function(sf)
minmov.min_type('lbfgs_armijo_nonmonotone')
minmov.movemap(mm)

In[262]: int_ca_dist
Out[262]: 5.188580947619549

In[263]: out_dist
Out[263]: 20.662075700422758

In[264]: degrees(out_ang)
Out[264]: 75.4564298506566

In[265]: degrees(out_ang + pi / 2)
Out[265]: 165.45642985065658

In[266]: 180 - degrees(out_ang + pi / 2)
Out[266]: 14.543570149343424
Пример #6
0
def get_designer_mover(score_function=DEFAULT.score_function,
                       designable=DEFAULT.designable,
                       repackable=DEFAULT.repackable,
                       cutoff=DEFAULT.cutoff,
                       ligand_chain=DEFAULT.ligand_chain,
                       blocked_region=DEFAULT.blocked_region):
    """
    Returns a design Mover.
    The design mover used in this example is a SequenceMover comprised of 2
    movers: a PackRotamersMover and a MinMover, in this order. For the
    PackRotamersMover, extra rotamers on chi1 and chi2 are enabled. During this
    step, residues on the 'designable' ResidueSelector will be subject to design
    efforts, while residues on the 'repackable' ResidueSelector will only change
    conformation to rotamers of the same aminoacid. During the minimization step
    only the sidechains are allowed to relax. By default, when no custom
    designable or repackable ResidueSelector's are provided, both designable and
    repackable regions are set to 'auto', where the repackable region is defined
    as all the residues of the ligand_chain (C, by default) and the designable
    region is defined as the residues within a cutoff (9.0 Angstrom, by default)
    from the ligand_chain. If a blocked region is provided, no design nor repack
    will be performed on those residues. A blocked region is defined with the
    following syntax: "start-end", where start and end are residue index
    numbers. For example, blocking the region from residue 1 to 56, one would
    use "1-56".
    """

    # --- SCORE FUNCTION
    if score_function == "auto":
        try:
            score_function = get_fa_scorefxn()
        except:
            score_function = get_fa_scorefxn()
    else:
        from pyrosetta.rosetta.core.scoring import ScoreFunction
        assert type(score_function) == ScoreFunction, \
            "Score function for relaxer mover must be of type ScoreFunction."

    # --- DESIGNABLE REGION
    designable = get_designable_region(designable, cutoff, ligand_chain,
                                       blocked_region)

    # --- REPACKABLE REGION
    if repackable == "auto":
        repackable = ChainSelector(ligand_chain)
    else:
        assert isinstance(repackable, ResidueSelector) or repackable == "auto",\
            "Repackable selection must be a ResidueSelector or set to 'auto'"

    task_factory = standard_task_factory()
    blockable = NotResidueSelector(OrResidueSelector(designable, repackable))
    task_factory.push_back(ExtraRotamers(0, 1, 1))  # ex1
    task_factory.push_back(ExtraRotamers(0, 2, 1))  # ex2
    block = PreventRepackingRLT()  # NO design, NO repacking
    repack = RestrictToRepackingRLT()  # NO design, ONLY repacking
    task_factory.push_back(OperateOnResidueSubset(block, blockable))
    task_factory.push_back(OperateOnResidueSubset(repack, repackable))

    pack_mover = PackRotamersMover(score_function)
    pack_mover.task_factory(task_factory)

    move_map = MoveMap()
    move_map.set_chi(True)
    min_mover = MinMover()
    min_mover.movemap(move_map)
    min_mover.score_function(score_function)
    min_mover.min_type('lbfgs_armijo_nonmonotone')

    designer = SequenceMover()
    designer.add_mover(pack_mover)
    designer.add_mover(min_mover)

    return designer
Пример #7
0
    # Define the Minimizer:
    #   Define the MoveMap (allowing movement in the sidechains only):
    move_map = MoveMap()
    move_map.set_chi(True)
    # Ex. Set a single residue (1) Chi movements to False:
    # Ex. move_map.set_chi(1, False)
    # Ex. Set a range of residues (2 to 10) Chi movements to True:
    # Ex. move_map.set_chi_true_range(2, 10)
    #    Note: Using the range, there's currently no function to set to False.
    # Ex. Visualize the current MoveMap:
    # Ex. move_map.show()
    #    Define the MinMover (with the current MoveMap, Score Function and set
    #    the minimization type to "lbfgs_armijo_nonmonotone"):
    min_mover = MinMover()
    min_mover.movemap(move_map)
    min_mover.score_function(score_function)
    min_mover.min_type('lbfgs_armijo_nonmonotone')
    # Ex. Visualize the current MinMover:
    # Ex. min_mover.show()

    # Define the SequenceMover:
    sequence_mover = SequenceMover()
    sequence_mover.add_mover(pack_mover)
    sequence_mover.add_mover(min_mover)

    # Run the script
    for i in range(args.n_cycles):
        # Ex. Run each step on SequenceMover individually
        # Ex. pack_mover.apply(p)
        # Ex. min_mover.apply(p)