예제 #1
0
def makeMovie(numClusts, frameRate):
	real = int(numClusts)+1;
	fr = int(frameRate)
	
	movieSetup = "1 x" + str(real*fr)
	cmd.mset(movieSetup)
	
	#Load in all the system data.
	for x in range(0, real):
		# load the next system.
		clustName = "system-" + str(x)
		system = clustName + ".xyz"
		cmd.load(system)
		# Set the sphere scale and view
		cmd.set("sphere_scale","0.5","all")
	
	#Set the right view
	cmd.set_view("0.910306633, -0.382467061, 0.158301696, 0.326706469, 0.898694992, 0.292592257, -0.254171938, -0.214630708, 0.943043232, 0.000000000, 0.000000000, -99.425979614, 10.461934090, 13.087766647, 11.786855698, 80.009132385, 118.842796326, -20.000000000")
	
	#Set all the frame data
	for x in range(0, real):
		# set the current frame.
		frameNum = (x*fr)+1
		cmd.frame(frameNum)
		clustName = "system-" + str(x)
		movieState = "hide; show spheres, " + clustName
		cmd.mdo(frameNum,movieState)
		cmd.mview("store")

	cmd.mview("reinterpolate")
	cmd.mplay()
예제 #2
0
    def testMset(self):
        # basic tet
        self.prep_movie()
        self.assertEquals(cmd.count_frames(),60)

        # test clearing
        cmd.mset()
        self.assertEquals(cmd.count_frames(),0)

        # test states and frame mapping
        cmd.mset("1x10 1 -10 10 -1")
        cmd.frame(1)
        self.assertEquals(cmd.get_frame(),1)
        self.assertEquals(cmd.get("state"),"1")
        cmd.frame(10)
        self.assertEquals(cmd.get_frame(),10)
        self.assertEquals(cmd.get("state"),"1")
        cmd.frame(12)
        self.assertEquals(cmd.get_frame(),12)
        self.assertEquals(cmd.get("state"),"2")
        cmd.frame(22)
        self.assertEquals(cmd.get_frame(),22)
        self.assertEquals(cmd.get("state"),"9")
        cmd.frame(30)
        self.assertEquals(cmd.get_frame(),30)
        self.assertEquals(cmd.get("state"),"1")
예제 #3
0
def chain_pull():
   cmd.mstop
   cmd.mclear
   coor = { 2:'[0,0,0]',      3:'[75,0,0]',     4:'[0,75,0]',
            5:'[0,0,75]',     6:'[-75,0,0]',    7:'[0,-75,0]',
            8:'[0,0,-75]',    9:'[75,75,0]',   10:'[-75,-75,0]',
           11:'[0,75,75]',   12:'[0,-75,-75]', 13:'[75,0,75]',
           14:'[-75,0,-75]', 15:'[75,75,75]',  16:'[-75,-75,-75]',
           17:'[75,-75,0]',  18:'[-75,75,0]',  19:'[0,75,-75]',
           20:'[0,-75,75]',  21:'[75,0,-75]',  22:'[-75,0,75]',
           23:'[75,75,-75]', 24:'[75,-75,75]', 25:'[-75,75,75]',
           26:'[-75,-75,75]',27:'[75,-75,-75]',28:'[-75,-75,-75]'}
   chainPullList = chain_contact()
   if chainPullList == False:
       return False
   chainPullLen = len(chainPullList)
   frames = 1+chainPullLen+172+chainPullLen+172
   cmd.mset('1','%s'%frames)

   i = chainPullLen+2
   for h in range(2,i):
       print 'translate %s,%s'%(coor[h],chainPullList[h-2])
       cmd.mdo(h,'translate %s,%s'%(coor[h],chainPullList[h-2]))
   cmd.mdo(i,'zoom all')
   util.mroll(i+1,i+171,1)
   i += 172
   for g in range(i,chainPullLen+i):
       c = coor[(g-i)+2].replace('7','-7').replace('--','-')
       cmd.mdo(g,'translate %s,%s'%(c,chainPullList[g-i]))
   g = chainPullLen+i
   cmd.mdo(g,'zoom all')
   util.mroll(g+1,g+171,1)
예제 #4
0
    def testMset(self):
        # basic tet
        self.prep_movie()
        self.assertEquals(cmd.count_frames(), 60)

        # test clearing
        cmd.mset()
        self.assertEquals(cmd.count_frames(), 0)

        # test states and frame mapping
        cmd.mset("1x10 1 -10 10 -1")
        cmd.frame(1)
        self.assertEquals(cmd.get_frame(), 1)
        self.assertEquals(cmd.get("state"), "1")
        cmd.frame(10)
        self.assertEquals(cmd.get_frame(), 10)
        self.assertEquals(cmd.get("state"), "1")
        cmd.frame(12)
        self.assertEquals(cmd.get_frame(), 12)
        self.assertEquals(cmd.get("state"), "2")
        cmd.frame(22)
        self.assertEquals(cmd.get_frame(), 22)
        self.assertEquals(cmd.get("state"), "9")
        cmd.frame(30)
        self.assertEquals(cmd.get_frame(), 30)
        self.assertEquals(cmd.get("state"), "1")
예제 #5
0
    def testScene(self):
        cmd.fragment('ala', 'm1')
        cmd.fragment('gly', 'm2')
        cmd.create('m2', 'm2', 1, 2)
        cmd.create('m2', 'm2', 1, 3)
        cmd.create('m2', 'm2', 1, 4)

        # store
        cmd.show_as('sticks', 'm1')
        cmd.show_as('spheres', 'm2')
        cmd.color('blue', 'm1')
        cmd.color('yellow', 'm2')
        view_001 = cmd.get_view()
        cmd.scene('new', 'store', 'hello world')

        # store
        cmd.frame(3)
        cmd.show_as('lines')
        cmd.color('red')
        cmd.turn('x', 45)
        view_002 = cmd.get_view()
        cmd.scene('new', 'store')

        # we actually don't know the auto naming counter
        # self.assertEqual(cmd.get_scene_list(), ['001', '002'])
        names = cmd.get_scene_list()

        # recall
        cmd.scene(names[0], 'recall', animate=0)
        self.assertArrayEqual(view_001, cmd.get_view(), delta=1e-3)
        self.assertEqual(cmd.count_atoms('m1'), cmd.count_atoms('color blue'))
        self.assertEqual(cmd.count_atoms('m1'), cmd.count_atoms('rep sticks'))
        self.assertEqual(cmd.count_atoms('m2'),
                         cmd.count_atoms('color yellow'))
        self.assertEqual(cmd.count_atoms('m2'), cmd.count_atoms('rep spheres'))
        self.assertNotEqual(cmd.get_wizard(), None)
        self.assertEqual(cmd.get_state(), 1)

        # recall
        cmd.scene(names[1], 'recall', animate=0)
        self.assertArrayEqual(view_002, cmd.get_view(), delta=1e-3)
        self.assertEqual(0, cmd.count_atoms('color blue'))
        self.assertEqual(0, cmd.count_atoms('rep sticks'))
        self.assertEqual(cmd.count_atoms(), cmd.count_atoms('color red'))
        self.assertEqual(cmd.count_atoms(), cmd.count_atoms('rep lines'))
        self.assertEqual(cmd.get_wizard(), None)
        self.assertEqual(cmd.get_state(), 3)

        # with movie (not playing) it must not recall the state
        cmd.mset('1-4')
        cmd.frame(1)
        cmd.scene(names[1], 'recall', animate=0)
        self.assertEqual(cmd.get_state(), 1)

        # rename and delete
        cmd.scene('F2', 'store')
        cmd.scene(names[0], 'rename', new_key='F1')
        cmd.scene(names[1], 'delete')
        self.assertEqual(cmd.get_scene_list(), ['F1', 'F2'])
예제 #6
0
def makmovie(event):
    try:
        cmd.mset("1 -%s"%fent.get())
        scriptent.delete(0,100000000)
        scriptent.insert(0,0)
    except:
        showinfo('Alert!', 'Enter the amount of frames to be in the movie')
        interior.mainloop()
예제 #7
0
    def testScene(self):
        cmd.fragment('ala', 'm1')
        cmd.fragment('gly', 'm2')
        cmd.create('m2', 'm2', 1, 2)
        cmd.create('m2', 'm2', 1, 3)
        cmd.create('m2', 'm2', 1, 4)

        # store
        cmd.show_as('sticks', 'm1')
        cmd.show_as('spheres', 'm2')
        cmd.color('blue', 'm1')
        cmd.color('yellow', 'm2')
        view_001 = cmd.get_view()
        cmd.scene('new', 'store', 'hello world')

        # store
        cmd.frame(3)
        cmd.show_as('lines')
        cmd.color('red')
        cmd.turn('x', 45)
        view_002 = cmd.get_view()
        cmd.scene('new', 'store')

        # we actually don't know the auto naming counter
        # self.assertEqual(cmd.get_scene_list(), ['001', '002'])
        names = cmd.get_scene_list()

        # recall
        cmd.scene(names[0], 'recall', animate=0)
        self.assertArrayEqual(view_001, cmd.get_view(), delta=1e-3)
        self.assertEqual(cmd.count_atoms('m1'), cmd.count_atoms('color blue'))
        self.assertEqual(cmd.count_atoms('m1'), cmd.count_atoms('rep sticks'))
        self.assertEqual(cmd.count_atoms('m2'), cmd.count_atoms('color yellow'))
        self.assertEqual(cmd.count_atoms('m2'), cmd.count_atoms('rep spheres'))
        self.assertNotEqual(cmd.get_wizard(), None)
        self.assertEqual(cmd.get_state(), 1)

        # recall
        cmd.scene(names[1], 'recall', animate=0)
        self.assertArrayEqual(view_002, cmd.get_view(), delta=1e-3)
        self.assertEqual(0, cmd.count_atoms('color blue'))
        self.assertEqual(0, cmd.count_atoms('rep sticks'))
        self.assertEqual(cmd.count_atoms(), cmd.count_atoms('color red'))
        self.assertEqual(cmd.count_atoms(), cmd.count_atoms('rep lines'))
        self.assertEqual(cmd.get_wizard(), None)
        self.assertEqual(cmd.get_state(), 3)

        # with movie (not playing) it must not recall the state
        cmd.mset('1-4')
        cmd.frame(1)
        cmd.scene(names[1], 'recall', animate=0)
        self.assertEqual(cmd.get_state(), 1)

        # rename and delete
        cmd.scene('F2', 'store')
        cmd.scene(names[0], 'rename', new_key='F1')
        cmd.scene(names[1], 'delete')
        self.assertEqual(cmd.get_scene_list(), ['F1', 'F2'])
예제 #8
0
 def testGetMovieLocked(self):
     self.assertEqual(cmd.get_movie_locked(), 0)
     cmd.mset('1x1')
     cmd.mdo(1, 'cmd.color("blue")')
     s = cmd.get_session()
     cmd.set_session(s)
     self.assertEqual(cmd.get_movie_locked(), 1)
     cmd.set('security', 0)
     cmd.set_session(s)
     self.assertEqual(cmd.get_movie_locked(), 0)
예제 #9
0
def setup_pymol():
    """Sets up PyMOL for making animations."""
    pymol.finish_launching()  # Prevent threading errors
    # Configure global settings
    cmd.set('scene_buttons', 1)
    cmd.set('matrix_mode', 1)
    cmd.set('movie_panel', 1)
    # Configure quality settings
    cmd.mset("1 x500")
    cmd.set('ray_trace_frames', 1)
    cmd.viewport(800, 800)
예제 #10
0
def setup_pymol():
    """Sets up PyMOL for making animations."""
    pymol.finish_launching()  # Prevent threading errors
    # Configure global settings
    cmd.set('scene_buttons', 1)
    cmd.set('matrix_mode', 1)
    cmd.set('movie_panel', 1)
    # Configure quality settings
    cmd.mset("1 x500")
    cmd.set('ray_trace_frames', 1)
    cmd.viewport(800, 800)
예제 #11
0
 def convert_spin(self):
     '''spin the protein'''
     if self.argsLength > 1 and self.args[1] == 'off':
         cmd.mstop()
         cmd.mset()
         pymSpin = 'PyMOL: mstop; mset\n\n'
     else:
         cmd.mset('1 x180')
         util.mroll(1,180,1)
         cmd.mplay()
         pymSpin = 'PyMOL: mset 1 x180; util.mroll(1,180,1); mplay'
     print pymSpin
예제 #12
0
 def convert_spin(self):
     '''spin the protein'''
     if self.argsLength > 1 and self.args[1] == 'off':
         cmd.mstop()
         cmd.mset()
         pymSpin = 'PyMOL: mstop; mset\n\n'
     else:
         cmd.mset('1 x180')
         util.mroll(1, 180, 1)
         cmd.mplay()
         pymSpin = 'PyMOL: mset 1 x180; util.mroll(1,180,1); mplay'
     print pymSpin
예제 #13
0
 def test_add_scenes(self):
     cmd.fragment('gly', 'm1')
     cmd.scene('001', 'store')
     cmd.turn('x', 90)
     cmd.scene('002', 'store')
     movie.add_scenes()
     self.assertEqual(cmd.count_frames(), 615)
     cmd.mset()
     movie.add_scenes(['001', '002'], pause=3)
     self.assertEqual(cmd.count_frames(), 315)
     cmd.mset()
     movie.add_scenes('["001", "002"]')  # string
     self.assertEqual(cmd.count_frames(), 615)
예제 #14
0
 def test_add_scenes(self):
     cmd.fragment('gly', 'm1')
     cmd.scene('001', 'store')
     cmd.turn('x', 90)
     cmd.scene('002', 'store')
     movie.add_scenes()
     self.assertEqual(cmd.count_frames(), 615)
     cmd.mset()
     movie.add_scenes(['001', '002'], pause=3)
     self.assertEqual(cmd.count_frames(), 315)
     cmd.mset()
     movie.add_scenes('["001", "002"]') # string
     self.assertEqual(cmd.count_frames(), 615)
예제 #15
0
def color_L1(arg0, arg1, arg2, arg3, arg4=1, MOVIE=0, bgcol='hydrogen'):
    '''
DESCRIPTION

    Brief description: Colors the identified L1 features 
    '''
    # Running on pymol cmdline
    #run ./pymol_scripts/color_L1.py
    #color_L1 pdb/1ruz.pdb, 78 137 158 188 241 292 573, green, 2
    filename = arg0

    cmd.load(filename)
    cmd.hide('everything')
    #cmd.cartoon('rectangle')
    cmd.show('cartoon')

    cmd.set('reflect', 0.5)

    Feature_set = [int(j) for j in np.array(arg1.split())]
    col = arg2
    L = int(arg3)

    #reset color to gray
    if arg4 == '1':
        print('coloring gray')
        cmd.do('color ' + bgcol)

    print(arg4)

    F = np.array([np.arange(i - L, i + L + 1) for i in Feature_set]).flatten()
    for feature in F:
        print("resi " + str(feature))
        cmd.color(col, "resi " + str(feature))

    cmd.viewport("2560,1920")

    if MOVIE == "0":
        MOVIE = False

    if MOVIE:
        cmd.show('surface')
        cmd.mset('1 x 10')
        cmd.util.mroll(1, 10, 1)

        cmd.mplay
        cmd.viewport("2560,1920")
        cmd.set("ray_trace_frames", 1)
        cmd.set("cache_frames", 0)
        cmd.mclear
        cmd.mpng('zXXXmov')
예제 #16
0
 def animate(self,cleanup=0):
     if not cleanup:
         cmd.set("security",0)
         cmd.set_session(self.get_sess("$PYMOL_DATA/big_demo/animate.pse"))
         cmd.rock(1)
         cmd.set("field_of_view",23)
         cmd.rock(1)
         cmd.set("sweep_mode",3)
         cmd.set("sweep_angle",10)
         cmd.do("replace_wizard toggle, Molecular Animation")
     else:
         cmd.set("mesh_width",1)
         cmd.set("field_of_view",20)
         cmd.rock(0)
         cmd.mset()
         cmd.mstop()
예제 #17
0
def highlight_chains():
    cmd.mstop()
    cmd.mclear()
    cmd.mset()
    glb.update()

    colors = ['blue', 'orange', 'silver', 'green', 'yellow',
                     'purple', 'brightorange', 'lightblue', 'lightorange',
                     'pink', 'forest', 'firebrick', 'paleyellow', 'salmon',
                     'ruby', 'wheat', 'lightmagenta', 'nitblue']
    
    chains = []
    numChains = 0
    objects = cmd.get_names('all')
    for obj in objects:
        split = obj.split('Chain-')
        if len(split) == 2:
            chains.append(split[1])
            numChains += 1
    numFrames = (numChains*200)+70
    cmd.mset('1', numFrames)
    cmd.mdo(1,'color red, all; hide cartoon, all')
    cmd.orient()
    cmd.mview('store', '1')
    
    colorCount = 0
    frameCount = 1

    for i in chains:
        cmd.orient('chain ' + i)
        cmd.mview('store', frameCount+59)
        cmd.mview('store', frameCount+115)
        flash_chain(i, frameCount+59, 'red', colors[colorCount])
        cmd.orient()
        cmd.turn('x', '270')
        cmd.turn('y', '180')
        cmd.mview('store', frameCount+150)
        cmd.mview('store', frameCount+170)
        colorCount += 1
        frameCount += 200
        if(frameCount > numFrames-100):
            cmd.orient()
        cmd.mdo(numFrames,'mstop')
    cmd.mview('store', (numChains*200)+70)
    cmd.mview('interpolate')
    cmd.show('ribbon')
    cmd.color('red', 'all')
예제 #18
0
파일: assets.py 프로젝트: ninjha01/mast
def gen_frames(pdb):
    cmd.reinitialize()
    pdb_filename = "./pdbs/n" + pdb + ".pdb"
    cmd.load(pdb_filename)
    cmd.orient()
    cmd.show_as("cartoon")
    cmd.color("marine")
    cmd.set("opaque_background", 0)
    cmd.bg_color("white")
    cmd.mset("1 x90")
    cmd.util.mroll(1, 90, 1)
    frame_folder_path = "./frames/" + pdb + "/"
    frame_prefix = frame_folder_path + "frame"
    cmd.mpng(frame_prefix)
    final_frame = frame_prefix + "0090.png"
    while not os.path.exists(final_frame):
        time.sleep(0.1)
예제 #19
0
 def animate(self,cleanup=0):
     if not cleanup:
         cmd.set("security",0)
         cmd.set_session(self.get_sess("$PYMOL_DATA/big_demo/animate.pse"))
         cmd.rock(1)
         cmd.set("field_of_view",23)
         cmd.rock(1)
         cmd.set("sweep_mode",3)
         cmd.set("sweep_angle",10)
         cmd.set("sphere_mode",5)
         cmd.do("replace_wizard toggle, Molecular Animation")
     else:
         cmd.set("mesh_width",1)
         cmd.set("field_of_view",20)
         cmd.rock(0)
         cmd.mset()
         cmd.mstop()
예제 #20
0
    def testMdelete(self):
        cmd.mset("1x10 1 -10 10 -1")

        # 1-10 = state 1
        # 11-20 = states 1..10
        # 21-30 = states 10..1

        cmd.mdelete(count=10, frame=11)
        # simple delete
        self.assertEquals(cmd.count_frames(), 20)

        # test state mapping
        cmd.frame(1)
        self.assertEquals(cmd.get("state"), "1")
        cmd.frame(11)
        self.assertEquals(cmd.get("state"), "10")
        cmd.frame(20)
        self.assertEquals(cmd.get("state"), "1")
예제 #21
0
    def testMdelete(self):
        cmd.mset("1x10 1 -10 10 -1")

        # 1-10 = state 1
        # 11-20 = states 1..10
        # 21-30 = states 10..1

        cmd.mdelete(count=10, frame=11)
        # simple delete
        self.assertEquals(cmd.count_frames(),20)

        # test state mapping
        cmd.frame(1)
        self.assertEquals(cmd.get("state"),"1")
        cmd.frame(11)
        self.assertEquals(cmd.get("state"),"10")
        cmd.frame(20)
        self.assertEquals(cmd.get("state"),"1")
예제 #22
0
def make_all():
    #make the whole movie
    global views
    global frames
    global models
 
    #first get total number of frames
    ftot = 0
    i = 0
    setcommand = ""
    for nframes in frames[:-1]:
        ftot += nframes
        if models.has_key(i):
            setcommand += " " + models[i] + " "
        else:
            setcommand += " 1 x%i" % nframes
        i += 1
 
    #initialize movie
    #cmd.mset("1 x%i" % ftot)
    #cmd.mset("1 x50 1 -30 30 x20")
    cmd.mset( setcommand )
 
    #loop through views
    start_view = views[0][:]
    i = 0
    first_frame = 1
    for view in views[1:]:
        end_view = view[:]
        if settings.has_key(i):
            movs.animate_transition( start_view, end_view, frames[i], first_frame, settings[i] )
        elif fades.has_key(i):
            movs.animate_transition( start_view, end_view, frames[i], first_frame, fades[i] )
        else:
            movs.animate_transition( start_view, end_view, frames[i], first_frame )
        #add an action
        if actions.has_key(i):
            mdo_cmd = actions[i]#+";set_view ("+str( views[i] )+")"
            print mdo_cmd
            cmd.mdo(first_frame, mdo_cmd)
        first_frame += frames[i]
        i += 1
        start_view = end_view[:]
    cmd.frame(1)
예제 #23
0
def make_all():
    #make the whole movie
    global views
    global frames
    global models

    #first get total number of frames
    ftot = 0
    setcommand = ""
    for i, nframes in enumerate(frames[:-1]):
        ftot += nframes
        if i in models:
            setcommand += " " + models[i] + " "
        else:
            setcommand += " 1 x%i" % nframes

    #initialize movie
    #cmd.mset("1 x%i" % ftot)
    #cmd.mset("1 x50 1 -30 30 x20")
    cmd.mset(setcommand)

    #loop through views
    start_view = views[0][:]
    first_frame = 1
    for i, view in enumerate(views[1:]):
        end_view = view[:]
        if i in settings:
            movs.animate_transition(start_view, end_view, frames[i],
                                    first_frame, settings[i])
        elif i in fades:
            movs.animate_transition(start_view, end_view, frames[i],
                                    first_frame, fades[i])
        else:
            movs.animate_transition(start_view, end_view, frames[i],
                                    first_frame)
        #add an action
        if i in actions:
            mdo_cmd = actions[i]  #+";set_view ("+str( views[i] )+")"
            print mdo_cmd
            cmd.mdo(first_frame, mdo_cmd)
        first_frame += frames[i]
        start_view = end_view[:]
    cmd.frame(1)
예제 #24
0
def make_all():
    # make the whole movie
    global views
    global frames
    global models

    # first get total number of frames
    ftot = 0
    setcommand = ""
    for i, nframes in enumerate(frames[:-1]):
        ftot += nframes
        if i in models:
            setcommand += " " + models[i] + " "
        else:
            setcommand += " 1 x%i" % nframes

    # initialize movie
    # cmd.mset("1 x%i" % ftot)
    # cmd.mset("1 x50 1 -30 30 x20")
    cmd.mset(setcommand)

    # loop through views
    start_view = views[0][:]
    first_frame = 1
    for i, view in enumerate(views[1:]):
        end_view = view[:]
        if i in settings:
            movs.animate_transition(start_view, end_view, frames[i], first_frame, settings[i])
        elif i in fades:
            movs.animate_transition(start_view, end_view, frames[i], first_frame, fades[i])
        else:
            movs.animate_transition(start_view, end_view, frames[i], first_frame)
        # add an action
        if i in actions:
            mdo_cmd = actions[i]  # +";set_view ("+str( views[i] )+")"
            print mdo_cmd
            cmd.mdo(first_frame, mdo_cmd)
        first_frame += frames[i]
        start_view = end_view[:]
    cmd.frame(1)
예제 #25
0
    def test_scenes(self):
        self._load_example()

        cmd.scene('s1', 'store')
        cmd.enable('g1')
        cmd.scene('s2', 'store')
        cmd.mset('1x4')
        cmd.mview('store', 1, scene='s2')
        cmd.mview('store', 4, scene='s1')

        with testing.mkdtemp() as tempdir:
            # export
            prefix = os.path.join(tempdir, 'frame')
            cmd.mpng(prefix, width=100, height=100)

            img = self.get_imagearray(prefix + '0002.png')
            self.assertImageHasColor('red', img)
            self.assertImageHasColor('blue', img)

            img = self.get_imagearray(prefix + '0003.png')
            self.assertImageHasNotColor('red', img)
            self.assertImageHasColor('blue', img)
예제 #26
0
    def testMpng(self, modal):
        import glob, os

        shape2 = (100, 100)
        cmd.mset("1x4")
        cmd.mdo(1, 'bg_color red')
        cmd.mdo(3, 'bg_color blue')

        with testing.mkdtemp() as dirname:
            cmd.mpng(os.path.join(dirname, 'image'), width=shape2[0], height=shape2[1])
            filenames = glob.glob(os.path.join(dirname, 'image*.png'))
            filenames.sort()

            self.assertEqual(4, len(filenames))

            img = self.get_imagearray(filenames[0])
            self.assertEqual(img.shape[:2], shape2)
            self.assertImageHasColor('red', img)

            img = self.get_imagearray(filenames[-1])
            self.assertEqual(img.shape[:2], shape2)
            self.assertImageHasColor('blue', img)
예제 #27
0
    def test_scenes(self):
        self._load_example()

        cmd.scene('s1', 'store')
        cmd.enable('g1')
        cmd.scene('s2', 'store')
        cmd.mset('1x4')
        cmd.mview('store', 1, scene='s2')
        cmd.mview('store', 4, scene='s1')

        with testing.mkdtemp() as tempdir:
            # export
            prefix = os.path.join(tempdir, 'frame')
            cmd.mpng(prefix, width=100, height=100)

            img = self.get_imagearray(prefix + '0002.png')
            self.assertImageHasColor('red', img)
            self.assertImageHasColor('blue', img)

            img = self.get_imagearray(prefix + '0003.png')
            self.assertImageHasNotColor('red', img)
            self.assertImageHasColor('blue', img)
예제 #28
0
파일: filter.py 프로젝트: evonove/pymol
 def set_browse(self,browse):
     # allow user to focus on only a subset of the compounds
     self.browse = browse
     if self.browse == 1:
         print " Filter: Browsing all compounds."
         cmd.mset() # all states visible
     elif self.object==None:
         print " Filter-Error: please choose an object first"
     else: 
         self.check_object_dict()
         if self.browse == 2:
             print " Filter: Browsing accepted compounds."
             target = accept_str
         elif self.browse == 3:
             print " Filter: Browsing rejected compounds."            
             target = reject_str
         elif self.browse == 4:
             print " Filter: Browsing deferred compounds."                        
             target = defer_str
         lst = []
         sd = self.state_dict
         sdo = self.dict[self.object]
         if self.browse<5:
             for a in sdo.keys():
                 if sdo[a]==target:
                     lst.append(sd[a])
         else:
             print " Filter: Browsing remaining compounds"
             for a in sd.keys():
                 if not sdo.has_key(a):
                     lst.append(sd[a])
         lst.sort()
         if len(lst)==0:
             print " Filter-Error: No matching compounds."
         cmd.mset(' '.join(map(str,lst)))
         cmd.rewind()
     cmd.refresh_wizard()
예제 #29
0
 def set_browse(self,browse):
     # allow user to focus on only a subset of the compounds
     self.browse = browse
     if self.browse == 1:
         print(" Filter: Browsing all compounds.")
         cmd.mset() # all states visible
     elif self.object is None:
         print(" Filter-Error: please choose an object first")
     else:
         self.check_object_dict()
         if self.browse == 2:
             print(" Filter: Browsing accepted compounds.")
             target = accept_str
         elif self.browse == 3:
             print(" Filter: Browsing rejected compounds.")
             target = reject_str
         elif self.browse == 4:
             print(" Filter: Browsing deferred compounds.")
             target = defer_str
         lst = []
         sd = self.state_dict
         sdo = self.dict[self.object]
         if self.browse<5:
             for a in list(sdo.keys()):
                 if sdo[a]==target:
                     lst.append(sd[a])
         else:
             print(" Filter: Browsing remaining compounds")
             for a in sd.keys():
                 if a not in sdo:
                     lst.append(sd[a])
         lst.sort()
         if len(lst)==0:
             print(" Filter-Error: No matching compounds.")
         cmd.mset(' '.join(map(str,lst)))
         cmd.rewind()
     cmd.refresh_wizard()
예제 #30
0
 def test(self):
     cmd.pseudoatom('m1')
     cmd.mset('1x1')
     cmd.create('m2', 'm1')
     cmd.ray()
     v = cmd.get_object_matrix('m2')
     self.assertArrayEqual(v, [
         1.,
         0.,
         0.,
         0.,
         0.,
         1.,
         0.,
         0.,
         0.,
         0.,
         1.,
         0.,
         0.,
         0.,
         0.,
         1.,
     ], 0.001, 'object matrix not identity')
예제 #31
0
    def test_mdo(self):
        self._load_example()

        cmd.mset('1x3')
        cmd.mdo(1, 'disable m1')
        cmd.mdo(2, 'enable m1')
        cmd.mdo(3, 'enable g1')

        with testing.mkdtemp() as tempdir:
            # export
            prefix = os.path.join(tempdir, 'frame')
            cmd.mpng(prefix, width=100, height=100)

            img = self.get_imagearray(prefix + '0001.png')
            self.assertImageHasNotColor('red', img)
            self.assertImageHasColor('blue', img)

            img = self.get_imagearray(prefix + '0002.png')
            self.assertImageHasNotColor('red', img)
            self.assertImageHasColor('blue', img)

            img = self.get_imagearray(prefix + '0003.png')
            self.assertImageHasColor('red', img)
            self.assertImageHasColor('blue', img)
예제 #32
0
    def testMpng(self, modal):
        import glob, os

        shape2 = (100, 100)
        cmd.mset("1x4")
        cmd.mdo(1, 'bg_color red')
        cmd.mdo(3, 'bg_color blue')

        with testing.mkdtemp() as dirname:
            cmd.mpng(os.path.join(dirname, 'image'),
                     width=shape2[0],
                     height=shape2[1])
            filenames = glob.glob(os.path.join(dirname, 'image*.png'))
            filenames.sort()

            self.assertEqual(4, len(filenames))

            img = self.get_imagearray(filenames[0])
            self.assertEqual(img.shape[:2], shape2)
            self.assertImageHasColor('red', img)

            img = self.get_imagearray(filenames[-1])
            self.assertEqual(img.shape[:2], shape2)
            self.assertImageHasColor('blue', img)
예제 #33
0
    def test_mdo(self):
        self._load_example()

        cmd.mset('1x3')
        cmd.mdo(1, 'disable m1')
        cmd.mdo(2, 'enable m1')
        cmd.mdo(3, 'enable g1')

        with testing.mkdtemp() as tempdir:
            # export
            prefix = os.path.join(tempdir, 'frame')
            cmd.mpng(prefix, width=100, height=100)

            img = self.get_imagearray(prefix + '0001.png')
            self.assertImageHasNotColor('red', img)
            self.assertImageHasColor('blue', img)

            img = self.get_imagearray(prefix + '0002.png')
            self.assertImageHasNotColor('red', img)
            self.assertImageHasColor('blue', img)

            img = self.get_imagearray(prefix + '0003.png')
            self.assertImageHasColor('red', img)
            self.assertImageHasColor('blue', img)
예제 #34
0
cmd.show('surface', 'chain A+B+C')
cmd.show('cartoon', 'chain E+F')
cmd.scene('S0', action='store', view=0, frame=0, animate=-1)

cmd.show('cartoon')
cmd.hide('surface')

cmd.scene('S1', action='store', view=0, frame=0, animate=-1)

cmd.hide('cartoon', 'chain A+B+C')
cmd.show('mesh', 'chain A')
cmd.show('sticks', 'chain A+B+C')
cmd.scene('S2', action='store', view=0, frame=0, animate=-1)

cmd.set('ray_trace_mode', 0)
cmd.mset(1, 500)


cmd.frame(0)
cmd.scene('S0')
cmd.mview()
cmd.frame(60)
cmd.set_view((-0.175534308,   -0.331560850,   -0.926960170,
             0.541812420,     0.753615797,   -0.372158051,
             0.821965039,    -0.567564785,    0.047358301,
             0.000000000,     0.000000000, -249.619018555,
             58.625568390,   15.602619171,   77.781631470,
             196.801528931, 302.436492920,  -20.000000000))

cmd.mview()
cmd.frame(90)
# Load trajectory
cmd.load_traj(trajectory_temporary_filename, object='system')

# Align all states
if solute == 'dna':
    cmd.intra_fit('name P') # DNA
else:
    cmd.intra_fit('solute') # protein

# Zoom viewport
cmd.zoom('solute')
cmd.orient('solute')

# Create one-to-one mapping between states and frames.
cmd.mset("1 -%d" % nframes)


# Delete first frame
cmd.mdelete("1")

# Render movie
cmd.set('ray_trace_frames', 0)
#nframes = 1
for frame in range(nframes):
    print("rendering frame %04d / %04d" % (frame+1, nframes))
    cmd.set('suspend_updates', 'on')
    cmd.frame(frame+1)
    # Show only ions
    cmd.hide('spheres', 'all')
    # Determine oxygen indices for cations and anions
예제 #36
0
파일: render.py 프로젝트: brisvag/stir
 def init_movie():
     cmd.mdelete()
     cmd.mview('reset')
     frames = duration * 30
     cmd.mset(f'1x{frames}')
     return frames
예제 #37
0
cmd.hide('all')
cmd.show('cartoon', 'receptor')
cmd.show('sticks', 'ligand')
util.cbay('ligand')
cmd.color('green', 'mhc')
cmd.color('red', 'tcr')
cmd.show('surface', 'mhc')
cmd.set('transparency', 0.65)
cmd.set('surface_mode', 3)
cmd.set('surface_color', 'white')
#cmd.show('lines', '(not hydrogen) within 5 of ligand')
#cmd.show('surface', 'tcr')


# Create one-to-one mapping between states and frames.
cmd.mset("1 -%d" % cmd.count_states())

# Zoom viewport
#cmd.zoom('complex')
#cmd.orient('complex')
cmd.zoom('ligand')
cmd.orient('ligand')
cmd.turn('x', -90)

# Render movie
frame_prefix = 'frames/frame'
cmd.set('ray_trace_frames', 1)
cmd.set('ray_trace_frames', 0) # DEBUG
for iteration in range(niterations):
    print "rendering frame %04d / %04d" % (iteration+1, niterations)
    cmd.frame(iteration+1)
예제 #38
0
def rotate_y():
    cmd.mset()
    cmd.mset('1', '180')
    cmd.util.mroll('1', '180', '1')
    cmd.mplay()
예제 #39
0
def Ligand_Pull():
    glb.update()
    cmd.mstop()
    cmd.mclear()
    cmd.mset('1', '442')
    cmd.hide('everything')
    cmd.remove('resn HOH')
    cmd.color('green', 'all')
    objects = cmd.get_names('all')
    if 'ligands' in objects:
        cmd.set('stick_radius', '0.3')
        glb.procolor('ligands around 6','sticks','cpk','cartoon')
        glb.procolor('ligands','spheres','orange',None)
        cmd.set("cartoon_fancy_helices", "1")
        cmd.set("cartoon_fancy_sheets", "1")
        cmd.set('cartoon_transparency', '0.5')
        cmd.zoom()
        cmd.orient()
        cmd.mdo(1,'orient')
        cmd.mdo(2,'translate [2,0,0],ligands;')
        cmd.mdo(3,'translate [2,0,0],ligands;')
        cmd.mdo(4,'translate [2,0,0],ligands;')
        cmd.mdo(5,'translate [2,0,0],ligands;')
        cmd.mdo(6,'translate [2,0,0],ligands;')
        cmd.mdo(7,'translate [2,0,0],ligands;')
        cmd.mdo(8,'translate [2,0,0],ligands;')
        cmd.mdo(9,'translate [2,0,0],ligands;')
        cmd.mdo(10,'translate [2,0,0],ligands;')
        cmd.mdo(11,'translate [2,0,0],ligands;')
        cmd.mdo(12,'translate [2,0,0],ligands;')
        cmd.mdo(13,'translate [2,0,0],ligands;')
        cmd.mdo(14,'translate [2,0,0],ligands;')
        cmd.mdo(15,'translate [2,0,0],ligands;')
        cmd.mdo(16,'translate [2,0,0],ligands;')
        cmd.mdo(17,'translate [2,0,0],ligands;')
        cmd.mdo(18,'translate [2,0,0],ligands;')
        cmd.mdo(19,'translate [2,0,0],ligands;')
        cmd.mdo(20,'translate [2,0,0],ligands;')
        cmd.mdo(21,'translate [2,0,0],ligands;')
        cmd.mdo(22,'translate [2,0,0],ligands;')
        cmd.mdo(23,'translate [2,0,0],ligands;')
        cmd.mdo(24,'translate [2,0,0],ligands;')
        cmd.mdo(25,'translate [2,0,0],ligands;')
        cmd.mdo(26,'translate [2,0,0],ligands;')
        cmd.mdo(27,'translate [2,0,0],ligands;')
        cmd.mdo(28,'translate [2,0,0],ligands;')
        cmd.mdo(29,'translate [2,0,0],ligands;')
        cmd.mdo(30,'translate [2,0,0],ligands;')
        cmd.mdo(31,'translate [2,0,0],ligands;')
        cmd.mdo(32,'translate [2,0,0],ligands;')
        cmd.mdo(33,'translate [2,0,0],ligands;')
        cmd.mdo(34,'translate [2,0,0],ligands;')
        cmd.mdo(35,'translate [2,0,0],ligands;')
        cmd.mdo(36,'translate [2,0,0],ligands;')
        cmd.mdo(37,'translate [2,0,0],ligands;')
        cmd.mdo(38,'translate [2,0,0],ligands;')
        cmd.mdo(39,'translate [2,0,0],ligands;')
        cmd.mdo(40,'translate [2,0,0],ligands;')
        cmd.mdo(41,'translate [2,0,0],ligands;')
        cmd.mdo(42,'orient')
        cmd.util.mroll('42','222','1')
        cmd.mdo(223,'translate [-2,0,0],ligands;')
        cmd.mdo(224,'translate [-2,0,0],ligands;')
        cmd.mdo(225,'translate [-2,0,0],ligands;')
        cmd.mdo(226,'translate [-2,0,0],ligands;')
        cmd.mdo(227,'translate [-2,0,0],ligands;')
        cmd.mdo(228,'translate [-2,0,0],ligands;')
        cmd.mdo(229,'translate [-2,0,0],ligands;')
        cmd.mdo(230,'translate [-2,0,0],ligands;')
        cmd.mdo(231,'translate [-2,0,0],ligands;')
        cmd.mdo(232,'translate [-2,0,0],ligands;')
        cmd.mdo(233,'translate [-2,0,0],ligands;')
        cmd.mdo(234,'translate [-2,0,0],ligands;')
        cmd.mdo(235,'translate [-2,0,0],ligands;')
        cmd.mdo(236,'translate [-2,0,0],ligands;')
        cmd.mdo(237,'translate [-2,0,0],ligands;')
        cmd.mdo(238,'translate [-2,0,0],ligands;')
        cmd.mdo(239,'translate [-2,0,0],ligands;')
        cmd.mdo(240,'translate [-2,0,0],ligands;')
        cmd.mdo(241,'translate [-2,0,0],ligands;')
        cmd.mdo(242,'translate [-2,0,0],ligands;')
        cmd.mdo(243,'translate [-2,0,0],ligands;')
        cmd.mdo(244,'translate [-2,0,0],ligands;')
        cmd.mdo(245,'translate [-2,0,0],ligands;')
        cmd.mdo(246,'translate [-2,0,0],ligands;')
        cmd.mdo(247,'translate [-2,0,0],ligands;')
        cmd.mdo(248,'translate [-2,0,0],ligands;')
        cmd.mdo(249,'translate [-2,0,0],ligands;')
        cmd.mdo(250,'translate [-2,0,0],ligands;')
        cmd.mdo(251,'translate [-2,0,0],ligands;')
        cmd.mdo(252,'translate [-2,0,0],ligands;')
        cmd.mdo(253,'translate [-2,0,0],ligands;')
        cmd.mdo(254,'translate [-2,0,0],ligands;')
        cmd.mdo(255,'translate [-2,0,0],ligands;')
        cmd.mdo(256,'translate [-2,0,0],ligands;')
        cmd.mdo(257,'translate [-2,0,0],ligands;')
        cmd.mdo(258,'translate [-2,0,0],ligands;')
        cmd.mdo(259,'translate [-2,0,0],ligands;')
        cmd.mdo(260,'translate [-2,0,0],ligands;')
        cmd.mdo(261,'translate [-2,0,0],ligands;')
        cmd.mdo(262,'translate [-2,0,0],ligands;')
        cmd.mdo(263,'orient')
        cmd.util.mroll('264','442','1')
    else:
        showinfo('No ligands','There are no ligands in this PDB.')
예제 #40
0
 def prep_movie(self):
     cmd.mset("1x60")
예제 #41
0
파일: movie2.py 프로젝트: q10/bioe243
from glob import glob
from pymol import cmd

file_list = glob("mov*.pdb")

for file in file_list:
   cmd.color("white")
   cmd.load(file,"mov")
   cmd.hide("everything")
   cmd.show("nb_spheres")
   cmd.color("white")
   cmd.recolor

cmd.mset("1 -%d"%len(file_list))
예제 #42
0
 def _setup_movie(self, rep):
     cmd.load(self.datafile('1aon.pdb.gz'))
     cmd.show_as(rep)
     cmd.orient()
     cmd.mset('1x100')
     pymol.movie.roll(1, cmd.count_frames(), 0, 'y')
예제 #43
0
import pymol
from pymol import cmd, util
from glob import glob
import re

#cmd.load('nucleophilic.pse')

cmd.mset()
cmd.rewind()
nloop = 4
seconds = 4
fps = 30
degrees = 30
#cmd.mset(1, )
nframes = seconds * fps
for loop in range(nloop):
    cmd.movie.add_nutate(seconds,degrees)

objname = '2020-08-20-benzotriazoles-dockscores-x10876'
cmd.load(objname + '.sdf')
cmd.hide('sticks', 'hydrogen')
cmd.mview('store', 1, object=objname, state=1)
cmd.mview('store', nloop*seconds*fps, object=objname, state=nloop*seconds*fps)

cmd.viewport(720, 720)
#movie.produce('nucleophilic_displacement.mov', mode='ray')
예제 #44
0
# let's dress it up a little bit 

cmd.show("sticks","demo")

cmd.show("spheres","resi 10")

cmd.color("yellow","resi 5 and element C")

# now loop, updating the coordinates and appending the model
# onto 99 subsequent frames...

m = cmd.get_model()
for a in range(1,100):
   for a in m.atom:
      a.coord[0]+=(random()-0.5)*0.1
      a.coord[1]+=(random()-0.5)*0.1
      a.coord[2]+=(random()-0.5)*0.1
   cmd.load_model(m,"demo") # NOTE: no state number provided -> appends

# now define the movie with short pauses at beginning and and

cmd.mset("1 x15 1 -100 100 x15")

# now play the movie...

cmd.mplay()

# by default, PyMOL plays ~30 fps.
# "set movie_delay=0" to see maximum speed...

예제 #45
0
# All of the following imports are distributed with python3 by default
import sys
import time
import FindPyMol

# following try catch is meant to initiate a trouble shooting step if pymol cannot be imported
try:
    from pymol import finish_launching, cmd
except ImportError:
    FindPyMol.pymol_not_found()
    sys.exit(1)

if __name__ == '__main__':
    code = 0

    while True:
        code = input("Enter 4 letter name of PDB protien file:  ")
        if type(code) is not str:
            print("enter a valid code string")
        else:
            break

    finish_launching(['pymol', '-q'])  # open pymol in quiet mode
    time.sleep(2)
    cmd.fetch(code)  # gets protein code to load in
    cmd.spectrum()
    cmd.mset("1x180")
    cmd.movie.roll(1, 180, 1)
    cmd.movie.produce("movietest", mode="draw")
예제 #46
0
    def get_extent(self):
        return [
            self.vert.min(0).tolist(),
            self.vert.max(0).tolist(),
        ]

class myCallbackDynamic(myCallback):
    '''
    Dynamic object which updates vertex coordinates every frame
    '''
    def __call__(self):
        self.update(cmd.get_frame() * 2)
        myCallback.__call__(self)

# load it into PyMOL

for b in range(0, 63):
    cmd.load_callback(myCallback(b), 'gl03', b + 1)

cmd.load_callback(myCallbackDynamic(), 'gl03dyn', 1)

# give us a nice view

cmd.turn('z',20)
cmd.turn('y',20)
cmd.turn('x',20)

cmd.mset('1-62')
cmd.mplay()

예제 #47
0
cmd.color("cyan", "chain B")
cmd.color("green", "chain H")
cmd.color("pink", "chain C")
cmd.show("cartoon")
cmd.hide("lines")
for resi in designed_residues:
	string = "chain H and resi " + str(resi)
	cmd.color("red",string)	
	cmd.show("sticks",string)
	

string =""
for g in designed_residues:
	for i in range(1,101):
		string += ("%s x1 ")%i
cmd.mset(string)
cmd.frame("1")
cmd.orient()
cmd.mview("store")
#util.mroll(1,500,1)
string=""
frame=100
for resi in designed_residues:
	resi_behind = int(resi) -2
	resi_ahead = int(resi) + 2
	cmd.frame(frame)
	string = "chain H and resi "+str(resi_behind) + "+"+ str(resi)+ "+"+str(resi_ahead)
	print string
	cmd.orient(string) 
	cmd.mview("store")
	frame += 100
예제 #48
0
frames = int(os.environ["FRAMES"])
renderers = int(os.environ["RENDERERS"])
renderer_num = int(os.environ["PBS_ARRAYID"])
renderer_num = renderer_num - 1
frames_per_renderer = frames / renderers
start_frame = 1 + (renderer_num * frames_per_renderer)
end_frame = start_frame + frames_per_renderer 
print "render.py: session:" + session + " name: " + name
print "Session directory:" + sessiondir
print "This is renderer: " + str(renderer_num) + " Responsible for frames: " + str(start_frame) + "-" + str(end_frame)
os.chdir(sessiondir)
cmd.load(session)

### Movie commands go here.
cmd.set("cartoon_ring_mode", 3)
cmd.mset("1 x%i" %(frames))
util.mroll(1, frames, 1, 'y')
## End movie commands.

cmd.viewport("800","800")
cmd.set("hash_max", 255)
cmd.set("cache_frames", 0)
cmd.set("ray_trace_fog", 0)
cmd.set("ray_trace_frames", 1)
cmd.set("ray_shadows", 0)
cmd.set("antialias", 0)
cmd.set("auto_zoom", 0)
cmd.mclear
for frame in range(start_frame, end_frame):
    print "Rendering frame: " + str(frame)
    filename = name + str("%04d" % frame) + ".png"
예제 #49
0
from pymol import cmd

num_pdb = 167
loaded_num = 0
for file_prefix in range(num_pdb):
    loaded_num += 1
    cmd.load(str(file_prefix + 1) + '.pdb', "mov")
cmd.show("cartoon", "")
cmd.mset("1 -%d" % loaded_num)
예제 #50
0
 def testGetMovieLength(self):
     cmd.fragment('gly')
     self.assertEqual(cmd.get_movie_length(), 0)
     cmd.mset('1x10')
     self.assertEqual(cmd.get_movie_length(), 10)
     self.assertEqual(cmd.get_movie_length(images=1), 0)
예제 #51
0
    def reps(self, cleanup=0):
        rep_list = [
            "lines", "sticks", "spheres", "surface", "mesh", "dots", "ribbon",
            "cartoon"
        ]
        try:
            if not cleanup:
                cmd.disable()
                cmd.set("suspend_updates", 1, quiet=1)
                cmd.load("$PYMOL_DATA/demo/pept.pdb", "rep1")
                cmd.alter("rep1///1-5+8-13/", "ss='S'")
                cmd.cartoon("auto")
                cmd.hide("everything", "rep1")
                for a in range(2, 9):
                    cmd.create("rep%d" % a, "rep1")
                for x, y in enumerate(rep_list, 1):
                    cmd.show(x, "rep%d" % y)
                cmd.reset()
                cmd.zoom("rep1", 24)
                util.cbay("rep2")
                util.cbac("rep3")
                util.cbas("rep4")
                util.cbab("rep5")
                util.cbaw("rep6")
                util.cbay("rep8")

                cmd.set("suspend_updates", 0, quiet=1)
                scale = 0.5
                for b in range(1, 20):
                    cmd.set("suspend_updates", 0, quiet=1)
                    cmd.refresh()
                    cmd.set("suspend_updates", 1, quiet=1)
                    xt = -3.2
                    yt = 1.6
                    for a in range(1, 5):
                        cmd.translate([xt * scale, yt * scale, 0],
                                      object="rep%d" % a,
                                      camera=0)
                        xt = xt + 2
                    yt = -yt
                    xt = -3.2
                    for a in range(5, 9):
                        cmd.translate([xt * scale, yt * scale, 0],
                                      object="rep%d" % a,
                                      camera=0)
                        xt = xt + 2
                for a in range(1, 9):
                    cmd.origin("rep%d" % a, object="rep%d" % a)
                cmd.mset("1")
                st = ' '.join(
                    map(
                        lambda x, y: "rotate angle=-3,object=rep%d,axis=%s;" %
                        (x, y), list(range(1, 9)),
                        ['x', 'y', 'x', 'y', 'x', 'y', 'x', 'y']))
                cmd.mdo(1, st)
                cmd.set("suspend_updates", 0, quiet=1)
                cmd.mplay()

                cgo = []
                axes = [[4.5, 0.0, 0.0], [0.0, 3.0, 0.0], [0.0, 0.0, 3.0]]

                c = 1
                for a in rep_list:
                    ext = cmd.get_extent("rep%d" % c)
                    pos = [(ext[0][0] + ext[1][0]) / 2,
                           (ext[0][1] + ext[1][1]) / 2 + 14,
                           (ext[0][2] + ext[1][2]) / 2]
                    c = c + 1
                    pos[0] = pos[0] - (measure_text(plain, a, axes) / 2)
                    wire_text(cgo, plain, pos, a, axes)
                cmd.set("cgo_line_width", 1.5)
                cmd.set("auto_zoom", 0)
                cmd.load_cgo(cgo, 'reps')
                cmd.set("auto_zoom", 1)
            else:
                cmd.delete("rep*")
                cmd.mset()
                cmd.mstop()
        except:
            traceback.print_exc()
예제 #52
0
 def testCountFrames(self):
     self.assertEqual(cmd.count_frames(), 0)
     cmd.pseudoatom("m1")
     self.assertEqual(cmd.count_frames(), 1)
     cmd.mset("1x3")
     self.assertEqual(cmd.count_frames(), 3)
예제 #53
0
파일: movie.py 프로젝트: choderalab/perses
"""
Generate a movie from atom-by-atom proposal PMF and placement PDB files.
Run with `run movie.py` in PyMOL
"""

iteration = 6

from pymol import cmd, movie
#cmd.mclear()
#cmd.mset('1')
cmd.set('sphere_scale', 0.02)
cmd.rewind()
cmd.delete('all')
cmd.load('geometry-%d-forward-proposal.pdb' % iteration)
cmd.hide('all')
cmd.show('spheres', 'name Ar')
cmd.spectrum(expression='b', selection='name Ar', palette='blue_white_red', minimum=0, maximum=6)
cmd.load('geometry-%d-forward-stages.pdb' % iteration)
nframes = 30
specification = ''
for i in range(15):
   specification += '%d x%d ' % (i, nframes)
cmd.mset(specification)
frame = 0
for i in range(15):
    movie.rock(frame, frame+nframes)
    frame += nframes
예제 #54
0
    def reps(self,cleanup=0):
        rep_list = [ "lines","sticks","spheres","surface","mesh","dots","ribbon","cartoon" ]
        try:
            if not cleanup:
                cmd.disable()
                cmd.set("suspend_updates",1,quiet=1)
                cmd.load("$PYMOL_DATA/demo/pept.pdb","rep1")
                cmd.alter("rep1///1-5+8-13/","ss='S'")
                cmd.cartoon("auto")
                cmd.hide("everything","rep1")
                for a in range(2,9):
                    cmd.create("rep%d"%a,"rep1")
                for x, y in enumerate(rep_list, 1):
                    cmd.show(x, "rep%d" % y)
                cmd.reset()
                cmd.zoom("rep1",24)
                util.cbay("rep2")
                util.cbac("rep3")
                util.cbas("rep4")
                util.cbab("rep5")
                util.cbaw("rep6")            
                util.cbay("rep8")


                cmd.set("suspend_updates",0,quiet=1)
                scale=0.5
                for b in range(1,20):
                    cmd.set("suspend_updates",0,quiet=1)
                    cmd.refresh()
                    cmd.set("suspend_updates",1,quiet=1)
                    xt=-3.2
                    yt=1.6
                    for a in range(1,5):
                        cmd.translate([xt*scale,yt*scale,0],object="rep%d"%a,camera=0)
                        xt=xt+2
                    yt=-yt
                    xt=-3.2
                    for a in range(5,9):
                        cmd.translate([xt*scale,yt*scale,0],object="rep%d"%a,camera=0)
                        xt=xt+2
                for a in range(1,9):
                    cmd.origin("rep%d"%a,object="rep%d"%a)
                cmd.mset("1")
                st = ' '.join(map(lambda x,y:"rotate angle=-3,object=rep%d,axis=%s;"%(x,y),list(range(1,9)),
                                            ['x','y','x','y','x','y','x','y']))
                cmd.mdo(1,st)
                cmd.set("suspend_updates",0,quiet=1)
                cmd.mplay()

                cgo = []
                axes = [[4.5,0.0,0.0],[0.0,3.0,0.0],[0.0,0.0,3.0]]

                c = 1
                for a in rep_list:
                    ext = cmd.get_extent("rep%d"%c)
                    pos = [(ext[0][0]+ext[1][0])/2,
                             (ext[0][1]+ext[1][1])/2+14,
                             (ext[0][2]+ext[1][2])/2]
                    c = c + 1
                    pos[0]=pos[0]-(measure_text(plain,a,axes)/2)
                    wire_text(cgo,plain,pos,a,axes)
                cmd.set("cgo_line_width",1.5)
                cmd.set("auto_zoom",0)
                cmd.load_cgo(cgo,'reps')
                cmd.set("auto_zoom",1)
            else:
                cmd.delete("rep*")
                cmd.mset()
                cmd.mstop()
        except:
            traceback.print_exc()
예제 #55
0
 def _setup_movie(self, rep):
     cmd.load(self.datafile('1aon.pdb.gz'))
     cmd.show_as(rep)
     cmd.orient()
     cmd.mset('1x100')
     pymol.movie.roll(1, cmd.count_frames(), 0, 'y')
예제 #56
0
#cmd.set('surface_mode', 3)
#cmd.set('surface_color', 'white')

# QuteMol-like
cmd.bg_color('white')
cmd.set('light_count', 8)
cmd.set('spec_count', 1)
cmd.set('shininess', 10)
cmd.set('specular', 0.25)
cmd.set('ambient', 0)
cmd.set('direct', 0)
cmd.set('reflect', 1.5)
cmd.set('ray_shadow_decay_factor', 0.1)

# Create one-to-one mapping between states and frames.
cmd.mset("1 -%d" % cmd.count_states())

# Zoom viewport
cmd.zoom('complex')
#cmd.orient('complex')

#cmd.zoom('ligand')
#cmd.orient('ligand')
#cmd.turn('x', -90)

# Render movie
frame_prefix = 'frames/frame'
cmd.set('ray_trace_frames', 1)
cmd.set('ray_trace_frames', 0)  # DEBUG
for iteration in range(niterations):
    print "rendering frame %04d / %04d" % (iteration + 1, niterations)
예제 #57
0
def show_transition(start_index=0, end_index=0):
    #show the transition from the current view to the next view
    global frames
    global views
    global cur_index
    global actions
    global models
    if( start_index == 0 and end_index == 0 ):
        if cur_index >= len(views)-1:
            print "Current view is last in sequence."
            return
        start_index=cur_index
        end_index=cur_index+1
    else:
        start_index = int(start_index)
        end_index = int(end_index)
    ftot = 0
    setcommand = ""
    i = start_index
    for nframes in frames[start_index:end_index]:
        #ftot += nframes
        if models.has_key(i):
            setcommand += " " + models[i] + " "
        else:
            setcommand += " 1 x%i" % nframes
        i += 1
 
#    cmd.mset("1 x%i" % ftot)
    cmd.mset( setcommand )
    start_frame = 1
    #first do all actions that happen up to this point to make sure
    #things look the way they should
    first_action = ""
    for i in range( 0, start_index ):
        if actions.has_key(i):
            first_action += actions[i] + ';'
            #print "Executing %s from actions %d" % (actions[i],i)
            #cmd.do( actions[i] )
        if settings.has_key(i):
            settingName, selection, startVal, endVal = settings[i]
            action = "set %s, %f, %s;" % (settingName, endVal, selection)
            first_action += action
            #print "Executing %s from settings %d" % (action,i)
            #cmd.do( action )
        if fades.has_key(i):
            startVisSelection, endVisSelection, sticksOnly = fades[i]
            action = "set stick_transparency, 0, %s; set stick_transparency, 1, %s;" % (endVisSelection, startVisSelection)
            first_action += action
            #print "Executing %s from fades %d" % (action, i)
            #cmd.do( action )
    for i in range( start_index, end_index ):
        if settings.has_key(i):
            movs.animate_transition( views[i], views[i+1], frames[i], start_frame, settings[i] )
        elif fades.has_key(i):
            movs.animate_transition( views[i], views[i+1], frames[i], start_frame, fades[i] )
        else:
            movs.animate_transition( views[i], views[i+1], frames[i], start_frame )
        #add an action
        if start_frame == 1:
            mdo_cmd = first_action
            if actions.has_key(i):
                mdo_cmd += actions[i]+";"
            #mdo_cmd += "set_view("+str(views[i])+")"
            print mdo_cmd
            cmd.mdo(start_frame, mdo_cmd)
        elif actions.has_key(i):
            mdo_cmd = actions[i]+";set_view("+str(views[i])+")"
            cmd.mdo(start_frame, mdo_cmd)
            #print mdo_cmd
        start_frame += frames[i]
    cmd.frame(1)
    cmd.mplay()