# Copyright (c) 2009 Greg Pintilie - pintilie@mit.edu # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import chimera import os import os.path import Tkinter from CGLtk import Hybrid import VolumeData import _multiscale import MultiScale.surface import _surface import numpy import _contour import Matrix import VolumeViewer import VolumeViewer.volume from sys import stderr from time import clock from axes import prAxes import regions import graph from Segger import dev_menus, timing OML = chimera.openModels.list REG_OPACITY = 0.45 from segment_dialog import current_segmentation, segmentation_map def umsg ( txt ) : print txt status ( txt ) def status ( txt ) : txt = txt.rstrip('\n') msg.configure(text = txt) msg.update_idletasks() class Segger_Animate_Dialog ( chimera.baseDialog.ModelessDialog ) : title = "Animate Dialog (Segger v1.8.1)" name = "segger_animate" buttons = ( "Close" ) help = 'https://sites.google.com/site/electronmicroscopyportal/tools/segger/user-guide/' def fillInUI(self, parent) : self.framesPath = "/Users/greg/dev/mol/chimera/frames/" self.framesPath = "/Users/greg/Desktop/frames/" #self.framesPath = "/Users/greg/Dropbox/Win80/frames" self.group_mouse_mode = None tw = parent.winfo_toplevel() self.toplevel_widget = tw tw.withdraw() parent.columnconfigure(0, weight = 1) row = 0 menubar = Tkinter.Menu(parent, type = 'menubar', tearoff = False) tw.config(menu = menubar) f = Tkinter.Frame(parent) f.grid(column=0, row=row, sticky='ew') l = Tkinter.Label(f, text=' ') l.grid(column=0, row=row, sticky='w') row += 1 ff = Tkinter.Frame(f) ff.grid(column=0, row=row, sticky='w') if 1 : l = Tkinter.Label(ff, text=" ") l.grid(column=0, row=0, sticky='w') c = Hybrid.Checkbutton(ff, 'Save', False ) c.button.grid (column=1, row=0, sticky='w') self.makeMovie = c.variable c = Hybrid.Checkbutton(ff, 'Stop', False ) c.button.grid (column=2, row=0, sticky='w') self.stopMovie = c.variable b = Tkinter.Button(ff, text="Start", command=self.Start) b.grid (column=3, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="S2", command=self.S2) b.grid (column=4, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="S2 close", command=self.S2Close) b.grid (column=5, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="S2 shell", command=self.S2Shell) b.grid (column=6, row=0, sticky='w', padx=5) #b = Tkinter.Button(ff, text="Make Movie", command=self.MakeMovie) #b.grid (column=4, row=0, sticky='w', padx=5) #b = Tkinter.Button(ff, text="Clear", command=self.ClearFrames) #b.grid (column=2, row=0, sticky='w', padx=5) row += 1 ff = Tkinter.Frame(f) ff.grid(column=0, row=row, sticky='w') if 1 : l = Tkinter.Label(ff, text=" ") l.grid(column=0, row=0, sticky='w') b = Tkinter.Button(ff, text="Cycle Vis Maps", command=self.CycleVisMaps) b.grid (column=1, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="Cycle Threshold", command=self.CycleThr) b.grid (column=2, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="FromInitPos", command=self.FromInitPos) b.grid (column=3, row=0, sticky='w', padx=5) row += 1 ff = Tkinter.Frame(f) ff.grid(column=0, row=row, sticky='w') if 1 : l = Tkinter.Label(ff, text=" ") l.grid(column=0, row=0, sticky='w') b = Tkinter.Button(ff, text="SGIV Anchor", command=self.SGIV_Anchor) b.grid (column=1, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="SGIV Trimer", command=self.SGIV_Trimer) b.grid (column=2, row=0, sticky='w', padx=5) row += 1 ff = Tkinter.Frame(f) ff.grid(column=0, row=row, sticky='w') if 1 : b = Tkinter.Button(ff, text="ER", command=self.ER) b.grid (column=0, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="ER(P300-ab)", command=self.ER_p300_AB) b.grid (column=1, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="ER(P300)", command=self.ER_p300) b.grid (column=2, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="ER_f1", command=self.ER_f1) b.grid (column=3, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="ER_f2", command=self.ER_f2) b.grid (column=4, row=0, sticky='w', padx=5) row += 1 ff = Tkinter.Frame(f) ff.grid(column=0, row=row, sticky='w') if 1 : b = Tkinter.Button(ff, text="ER-seg", command=self.ER_SEG) b.grid (column=0, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="ER2-seg", command=self.ER2_SEG) b.grid (column=1, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="ER-cx", command=self.ER_Complex) b.grid (column=2, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="ER-cx-ab0", command=self.ER_Complex_AB0) b.grid (column=3, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="ER-AFAB", command=self.ER_AFAB) b.grid (column=4, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="AB1", command=self.ER_AB1) b.grid (column=5, row=0, sticky='w', padx=5) row += 1 ff = Tkinter.Frame(f) ff.grid(column=0, row=row, sticky='w') if 1 : b = Tkinter.Button(ff, text="ER-comp-cx", command=self.ER_comp_cx) b.grid (column=0, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="ER2_src", command=self.ER_comp_src) b.grid (column=1, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="ER2_all", command=self.ER_comp_all) b.grid (column=2, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="ER2_relion", command=self.ER2_relion) b.grid (column=3, row=0, sticky='w', padx=5) row += 1 ff = Tkinter.Frame(f) ff.grid(column=0, row=row, sticky='w') if 1 : l = Tkinter.Label(ff, text=" ") l.grid(column=0, row=0, sticky='w') b = Tkinter.Button(ff, text="P22_1", command=self.P22_1) b.grid (column=1, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="P22portal_Avg", command=self.P22_Portal_Avg) b.grid (column=2, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="P22portal_Cycle", command=self.P22_Portal_Cycle) b.grid (column=3, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="P22_2", command=self.P22_2) b.grid (column=4, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="P22_3", command=self.P22_3) b.grid (column=5, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="P22_4", command=self.P22_4) b.grid (column=6, row=0, sticky='w', padx=5) row += 1 ff = Tkinter.Frame(f) ff.grid(column=0, row=row, sticky='w') if 1 : l = Tkinter.Label(ff, text=" ") l.grid(column=0, row=0, sticky='w') b = Tkinter.Button(ff, text="TolC-all", command=self.TolC) b.grid (column=1, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="TolC", command=self.TolC1) b.grid (column=2, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="AcrA", command=self.TolC_acra) b.grid (column=3, row=0, sticky='w', padx=5) b = Tkinter.Button(ff, text="AcrB", command=self.TolC_acrb) b.grid (column=4, row=0, sticky='w', padx=5) row += 1 f = Tkinter.Frame(parent) f.grid(column=0, row=row, sticky='ew') l = Tkinter.Label(f, text=' ') l.grid(column=0, row=row, sticky='w') row += 1 dummyFrame = Tkinter.Frame(parent, relief='groove', borderwidth=1) Tkinter.Frame(dummyFrame).pack() dummyFrame.grid(row=row,column=0,columnspan=7, pady=7, sticky='we') row = row + 1 global msg msg = Tkinter.Label(parent, width = 60, anchor = 'w', justify = 'left', fg="red") msg.grid(column=0, row=row, sticky='ew') self.msg = msg row += 1 self.ams = [] def Start ( self ) : print "Starting" #om = AnimatableModel () #om.FromMap ( getMod ( "r3s.mrc" ) ) for m in chimera.openModels.list() : m.openState.xform = chimera.Xform() return refMod = None r3s = None r3sg = None r3seg = None for mod in chimera.openModels.list () : om = AnimatableModel () om.FromMod ( mod ) if mod.name == "r3s.mrc" : refMod = om if mod.name == "r3s.mrc" : r3s = om if mod.name == "r3sg2.mrc" : r3sg = om if mod.name == "r3sg2.seg" : r3seg = om self.ams.append ( om ) print len(self.ams), "mods" print "Ref mod: " + refMod.mod.name #from volume import show_planes #if not show_planes(v, a, p, d, extend_axes, False): if 0 : from chimera import dialogs volDialog = dialogs.find ( "volume viewer", create=False ) if volDialog != None : for i in range ( 5, 130, 1 ) : print "Plane", i volDialog.plane_panel.plane.set_value(i) self.SaveFrame ( i ) for i in range ( 130, 5, -1 ) : print "Plane", i volDialog.plane_panel.plane.set_value(i) self.SaveFrame ( i ) if 0 : r3s.Show () for i in range ( 100 ) : thr = 260 - 70.0 * float(i)/100.0 print "Thr", thr r3s.SetSurfThr ( thr ) #r3s.SetSurfColor ( r, g, b, a ) self.SaveFrame ( i ) if 0 : r3s.Show () r3sg.Show() r3sg.SetSurfColor ( .7, .7, .7, 1.0 ) N = 10 for i in range ( N ) : f = float(i)/float(N-1) print "Fade", f #r3sg.SetSurfColor ( .7, .7, .7, float(i)/59 ) r3s.SetSurfColor ( .7, .7, .7, 1.0-f ) self.SaveFrame ( i ) r3s.Hide () r3seg.Show () N = 10 for i in range ( N ) : f = float(i)/float(N-1) print "Alpha", f r3seg.SetAlpha ( f ) self.SaveFrame ( i ) if 0 : for i in range (60) : print "At frame", i for om in self.ams : om.Rotate ( 1.0, refMod.COM ) pass self.SaveFrame ( i ) self.MakeMovie () def S2 ( self ) : print "S2" self.ClearFrames() self.oms = {} for mod in chimera.openModels.list () : om = AnimatableModel () om.FromMod ( mod ) self.oms[om.mod.name] = om print len(self.oms.values()), "mods" shells = ["s2_dna_shell_1.mrc", "s2_dna_shell_2.mrc", "s2_dna_shell_3.mrc", "s2_dna_shell_4.mrc", "s2_dna_shell_5.mrc"] for mname in shells : om = self.oms[mname] om.SetAlpha ( 1.0 ) om.Show() fri = 0 oshell = self.oms["s2_shell.mrc"] oshell.SetSurfThr ( .215 ) oshell.Show() for i in range (180) : print "Rot", fri for om in self.oms.values() : om.Rotate ( 0.5, oshell.COM ) self.SaveFrame ( fri ) fri += 1 thrMin = 0.215 thrMax = 0.915 N = 240 for i in range ( N ) : f = float(i)/float(N-1) thr = thrMin + f * (thrMax-thrMin) print "Thr", thr oshell.SetSurfThr ( thr ) self.SaveFrame ( fri ) fri += 1 oshell.Hide () N = 60 for mname in shells : print mname om = self.oms[mname] for i in range ( N ) : f = float(i)/float(N-1) print "Alpha", f om.SetAlpha ( 1.0-f ) self.SaveFrame ( fri ) fri += 1 om.Hide(); self.MakeMovie () def S2Close ( self ) : print "S2 Close" self.GetAMods() shells = ["s2_dna_shell_1.mrc", "s2_dna_shell_2.mrc", "s2_dna_shell_3.mrc", "s2_dna_shell_4.mrc", "s2_dna_shell_5.mrc"] for mname in shells : om = self.oms[mname] om.SetAlpha ( 1.0 ) om.Show() self.oms["s2_dna_ring_1.mrc"].Hide() self.oms["s2_dna_ring_2.mrc"].Hide() self.oms["s2_dna_ring_1f.pdb"].Hide() self.oms["s2_dna_ring_2f.pdb"].Hide() self.oms["s2_dna_inportal.mrc"].Show() self.oms["s2_dna_inportal.mrc"].SetAlpha(1.0) self.oms["s2_dna_inportal.pdb"].Show() self.oms["s2_tail.mrc"].Show() self.oms["s2_tail.mrc"].SetAlpha(1.0) self.oms["3lj5f.pdb"].Hide() return fri = 0 oshell = self.oms["s2_shell.mrc"] oshell.SetSurfThr ( .215 ) oshell.Show() thrMin = 0.215 thrMax = 0.915 N = 150 for i in range ( N ) : f = float(i)/float(N-1) thr = thrMin + f * (thrMax-thrMin) print "Thr", thr oshell.SetSurfThr ( thr ) self.SaveFrame ( fri ) fri += 1 oshell.Hide () oring1 = self.oms["s2_dna_ring_1.mrc"] oring1.Show() for i in range ( N ) : f = float(i)/float(N-1) print "Alpha", f oring1.SetAlpha ( f ) self.SaveFrame ( fri ) fri += 1 oshell1 = self.oms["s2_dna_shell_1.mrc"] for i in range ( N ) : f = float(i)/float(N-1) print "Alpha", f oshell1.SetAlpha ( 1.0-f ) self.SaveFrame ( fri ) fri += 1 oshell1.Hide() oring2 = self.oms["s2_dna_ring_2.mrc"] oring2.Show() for i in range ( N ) : f = float(i)/float(N-1) print "Alpha", f oring2.SetAlpha ( f ) self.SaveFrame ( fri ) fri += 1 oshell2 = self.oms["s2_dna_shell_2.mrc"] for i in range ( N ) : f = float(i)/float(N-1) print "Alpha", f oshell2.SetAlpha ( 1.0-f ) self.SaveFrame ( fri ) fri += 1 oshell2.Hide() for mname in ["s2_dna_shell_3.mrc", "s2_dna_shell_4.mrc", "s2_dna_shell_5.mrc"] : print mname om = self.oms[mname] for i in range ( 30 ) : f = float(i)/float(N-1) print "Alpha", f om.SetAlpha ( 1.0-f ) self.SaveFrame ( fri ) fri += 1 om.Hide(); self.oms["s2_dna_ring_1f.pdb"].Show() self.oms["s2_dna_ring_2f.pdb"].Show() for i in range ( N ) : f = 0.6 * float(i)/float(N-1) print "Alpha", f oring1.SetAlpha ( 1.0-f ) oring2.SetAlpha ( 1.0-f ) self.SaveFrame ( fri ) fri += 1 self.oms["3lj5f.pdb"].Show() tail = self.oms["s2_tail.mrc"] for i in range ( N ) : f = float(i)/float(N-1) print "Alpha", f tail.SetAlpha ( 1.0-f ) self.SaveFrame ( fri ) fri += 1 tail.Hide (); self.oms["s2_dna_inportal.pdb"].Show() inp = self.oms["s2_dna_inportal.mrc"] for i in range ( N ) : f = 0.6 * float(i)/float(N-1) print "Alpha", f inp.SetAlpha ( 1.0-f ) self.SaveFrame ( fri ) fri += 1 self.MakeMovie () def S2Shell ( self ) : umsg ( "S2 Shell..." ) self.ClearFrames () self.GetAllAMods() fri = 0 oshell = self.oms["s2_shell.mrc"] oshell.SetSurfThr ( .215 ) oshell.Show() if 1 : thrMin = 0.215 thrMax = 0.75 N = 180 for i in range ( N ) : f = float(i)/float(N-1) thr = thrMin + f * (thrMax-thrMin) print fri, " thr:", thr oshell.SetSurfThr ( thr ) for om in self.oms.values() : om.Rotate ( 1.0, [0,0,0], [0,0,1] ) self.SaveFrame ( fri ) fri += 1 thrMin = 0.75 thrMax = 0.215 N = 180 for i in range ( N ) : f = float(i)/float(N-1) thr = thrMin + f * (thrMax-thrMin) print fri, " thr:", thr oshell.SetSurfThr ( thr ) for om in self.oms.values() : om.Rotate ( 1.0, [0,0,0], [0,0,1] ) self.SaveFrame ( fri ) fri += 1 else : thrMin = 0.215 thrMax = 0.75 N = 180 for i in range ( N ) : f = float(i)/float(N-1) print fri, " alpha:", (1.0-f) oshell.SetAlpha ( 1.0-f ) for om in self.oms.values() : om.Rotate ( 1.0, [0,0,0], [0,0,1] ) self.SaveFrame ( fri ) fri += 1 thrMin = 0.75 thrMax = 0.215 N = 180 for i in range ( N ) : f = float(i)/float(N-1) print fri, " alpha:", (f) oshell.SetAlpha ( f ) for om in self.oms.values() : om.Rotate ( 1.0, [0,0,0], [0,0,1] ) self.SaveFrame ( fri ) fri += 1 for i in range ( 200 ) : chimera.runCommand ( "clip hither -2" ) if 0 : for om in self.oms.values() : om.Rotate ( 0.1, [0,0,0], [0,0,1] ) print fri, " clip" self.SaveFrame ( fri ) fri += 1 self.SaveFrame ( fri, 90 ) fri += 90 for i in range ( 200 ) : chimera.runCommand ( "clip hither 2" ) if 0 : for om in self.oms.values() : om.Rotate ( 0.1, [0,0,0], [0,0,1] ) print fri, " clip" self.SaveFrame ( fri ) fri += 1 self.MakeMovie () def GetAllAMods (self) : self.oms = {} self.visOms = [] for mod in chimera.openModels.list () : om = AnimatableModel () om.FromMod ( mod ) self.oms[om.mod.name] = om if mod.display : self.visOms.append ( om ) print len(self.oms), "amods,", len(self.visOms), "visible" def GetVisMods (self) : self.visMods = [] for mod in chimera.openModels.list () : if mod.display : om = AnimatableModel () om.FromMod ( mod ) self.visMods.append ( om ) print len(self.visMods), " visible" def CycleThr ( self ) : print "Cycle Threshold" self.GetVisMods() vm = self.visMods[0] print " - working with " + vm.mod.name fri = 0 thrStart = 0.216 thrEnd = 3.11 N = 150 for i in range ( N ) : f = float(i)/float(N-1) thr = thrStart + f * (thrEnd-thrStart) #print " - thr", thr for vm in self.visMods : vm.SetSurfThr ( thr ) self.SaveFrame ( fri ) fri += 1 thrStart = 3.11 thrEnd = 0.216 N = 150 for i in range ( N ) : f = float(i)/float(N-1) thr = thrStart + f * (thrEnd-thrStart) #print " - thr", thr for vm in self.visMods : vm.SetSurfThr ( thr ) self.SaveFrame ( fri ) fri += 1 self.MakeMovie () def Take100 ( self ) : for i in range (100) : self.SaveFrame ( self.fri ) self.fri += 1 def ToInitPos ( self ) : self.GetVisMods() vm = self.visMods[0] print " - working with " + vm.mod.name refMod = chimera.openModels.list()[0] for vm in self.visMods : vm.xf0 = refMod.openState.xform def FromInitPos ( self ) : self.GetVisMods() vm = self.visMods[0] print " - working with " + vm.mod.name refMod = chimera.openModels.list()[0] for vm in self.visMods : vm.xf0 = refMod.openState.xform fri = 0 N = 90 for i in range ( N ) : f = float(i) / float(N-1) print "%.2f" % f, for vm in self.visMods : vm.SetXform ( f ) self.SaveFrame ( fri ) fri += 1 print "" self.MakeMovie () def CycleVisMaps (self) : from VolumeViewer import Volume mlist = OML(modelTypes = [Volume]) vMaps = [] for m in mlist : if m.display == True : vMaps.append ( m ) for m in vMaps : m.display = False fri = 0 self.ClearFrames () lastMap = None for i, m in enumerate (vMaps) : if lastMap : lastMap.display = False m.display = True lastMap = m print ".", self.SaveFrame ( fri, 5 ) fri += 5 print "" for m in vMaps : m.display = True self.MakeMovie () def SGIV_Anchor ( self ) : self.GetAllAMods() print "Visible: " for om in self.visOms : print " - ", om.mod.name vert = self.oms["anchor1_F2Rid.mrc"] bilayer = self.oms["it5-sumb-d1-bi1.mrc"] shell = self.oms["it5-sumb-d1-shell.mrc"] anchor = self.oms["anchor1.mrc"] helix1 = self.oms["helix1.mrc"] helix2 = self.oms["helix2.mrc"] helix3 = self.oms["helix3.mrc"] mprot = self.oms["mprot.mrc"] bilayer.SetSurfThr ( 1.15 ) shell.SetSurfThr ( 2.2 ) anchor.SetSurfThr ( 1.0 ) anchor.SetAlpha ( 1.0 ) helix1.Hide() helix2.Hide() helix3.Hide() mprot.Show() MOVIE = Movie ( self, "SGIV_anchor_2" ) #print " - ", anchor.V[2,0], anchor.V[2,1], anchor.V[2,2] ax = chimera.Vector ( vert.V[2,0], vert.V[2,1], vert.V[2,2] ) ax.normalize() MOVIE.add ( Rotate (0, 300, self.oms, vert.COM, ax, 360.0) ) MOVIE.add ( VaryThr (300, 400, shell, 2.2, 5.0) ) MOVIE.add ( VaryThr (300, 400, bilayer, 1.15, 2.8) ) MOVIE.add ( VaryThr (300, 400, anchor, 1, 2.56) ) MOVIE.add ( Rotate (400, 600, self.oms, vert.COM, ax, 360.0) ) #MOVIE.add ( Rotate (self.oms, oanchor.COM, ax, 360.0, 0, 18) ) MOVIE.add ( Hide (600, [mprot] ) ) MOVIE.add ( Show (600, [helix1] ) ) MOVIE.add ( Rotate (600, 800, self.oms, vert.COM, ax, 360.0) ) MOVIE.add ( Hide (800, [helix1] ) ) MOVIE.add ( Show (800, [helix2] ) ) MOVIE.add ( Rotate (800, 1000, self.oms, vert.COM, ax, 360.0) ) MOVIE.add ( Hide (1000, [helix2] ) ) MOVIE.add ( Show (1000, [helix3] ) ) MOVIE.add ( Rotate (1000, 1200, self.oms, vert.COM, ax, 360.0) ) MOVIE.add ( Hide (1200, [helix3] ) ) MOVIE.add ( VaryThr ( 1200, 1400, anchor, 2.56, 1.8) ) MOVIE.add ( VaryAlpha ( 1200, 1230, anchor, 1, 0.6) ) MOVIE.add ( Rotate (1400, 1600, self.oms, vert.COM, ax, 360.0) ) MOVIE.make () bilayer.SetSurfThr ( 1.15 ) shell.SetSurfThr ( 2.2 ) anchor.SetSurfThr ( 1.0 ) anchor.SetAlpha ( 1.0 ) helix1.Show() helix2.Show() helix3.Show() mprot.Show() def SGIV_Trimer ( self ) : self.GetAllAMods() print "Visible: " for om in self.visOms : print " - ", om.mod.name prot = self.oms["trimer_avg_A_seg2.mrc"] helix1 = self.oms["trimer_avg_A_seg2_helix1.mrc"] helix2 = self.oms["trimer_avg_A_seg2_helix2.mrc"] helix3 = self.oms["trimer_avg_A_seg2_helix3.mrc"] helix4 = self.oms["trimer_avg_A_seg2_helix4.mrc"] sheet1 = self.oms["trimer_avg_A_seg2_sheet1.mrc"] sheet2 = self.oms["trimer_avg_A_seg2_sheet2.mrc"] sheet3 = self.oms["trimer_avg_A_seg2_sheet3.mrc"] sheet4 = self.oms["trimer_avg_A_seg2_sheet4.mrc"] MOVIE = Movie ( self, "SGIV_trimer_1" ) #print " - ", anchor.V[2,0], anchor.V[2,1], anchor.V[2,2] ax = chimera.Vector ( -prot.V[2,0], -prot.V[2,1], -prot.V[2,2] ) ax.normalize() t = 0; d = 200 MOVIE.add ( Show (t, [prot] ) ) MOVIE.add ( Hide (t, [helix1, helix2, helix3, helix4, sheet1, sheet2, sheet3, sheet4] ) ) MOVIE.add ( Rotate (t, t+d, self.oms, prot.COM, ax, 360.0) ) MOVIE.add ( Hide (t+d, [prot] ) ) t += d; d = 100 MOVIE.add ( Show (t, sheet1 ) ) MOVIE.add ( Rotate (t, t+d, self.oms, prot.COM, ax, 360.0) ) MOVIE.add ( Hide (t+d, sheet1 ) ) t += d; MOVIE.add ( Show (t, sheet2 ) ) MOVIE.add ( Rotate (t, t+d, self.oms, prot.COM, ax, 360.0) ) MOVIE.add ( Hide (t+d, sheet2 ) ) t += d; MOVIE.add ( Show (t, sheet3 ) ) MOVIE.add ( Rotate (t, t+d, self.oms, prot.COM, ax, 360.0) ) MOVIE.add ( Hide (t+d, sheet3 ) ) t += d; MOVIE.add ( Show (t, sheet4 ) ) MOVIE.add ( Rotate (t, t+d, self.oms, prot.COM, ax, 360.0) ) MOVIE.add ( Hide (t+d, sheet4 ) ) t += d MOVIE.add ( Show (t, helix1 ) ) MOVIE.add ( Rotate (t, t+d, self.oms, prot.COM, ax, 360.0) ) MOVIE.add ( Hide (t+d, helix1 ) ) t += d MOVIE.add ( Show (t, helix2 ) ) MOVIE.add ( Rotate (t, t+d, self.oms, prot.COM, ax, 360.0) ) MOVIE.add ( Hide (t+d, helix2 ) ) t += d MOVIE.add ( Show (t, helix3 ) ) MOVIE.add ( Rotate (t, t+d, self.oms, prot.COM, ax, 360.0) ) MOVIE.add ( Hide (t+d, helix3 ) ) t += d MOVIE.add ( Show (t, helix4 ) ) MOVIE.add ( Rotate (t, t+d, self.oms, prot.COM, ax, 360.0) ) MOVIE.add ( Hide (t+d, helix4 ) ) t += d; d = 15 MOVIE.add ( Show (t, prot ) ) #MOVIE.add ( Show (t, [helix1, helix2, helix3, helix4, sheet1, sheet2, sheet3, sheet4] ) ) #MOVIE.add ( Rotate (t, t+d, self.oms, prot.COM, ax, 360.0) ) MOVIE.make () def ERtest ( self ) : self.ClearFrames () self.GetAllAMods() print "Visible: " for om in self.visOms : print " - ", om.mod.name p300 = self.oms["complex_segments_P300_lp.mrc"] src1 = self.oms["complex_segments_SRC1_lp.mrc"] src2 = self.oms["complex_segments_SRC2_lp.mrc"] er = self.oms["complex_segments_ER_lp.mrc"] for amod in [p300, src1, src2, er] : amod.FromMap () MOVIE = Movie ( self, "ER_1" ) t = 0; d = 10 MOVIE.add ( VaryAlpha ( t, t+d, p300, 1, 0) ) MOVIE.add ( VaryAlpha ( t, t+d, src1, 1, 0) ) MOVIE.add ( VaryAlpha ( t, t+d, src2, 1, 0) ) MOVIE.add ( VaryAlpha ( t, t+d, er, 1, 0) ) MOVIE.make() def ER_Complex ( self ) : self.ClearFrames () self.GetAllAMods() posi = self.oms["complex.mrc"].FromMap () pos1 = self.oms["complex1.mrc"].FromMap () pos2 = self.oms["complex2.mrc"].FromMap () cx_all = self.oms["complex_segments_all.mrc"].FromMap () cx_ER = self.oms["complex_segments_ER_lp.mrc"].FromMap () cx_P300 = self.oms["complex_segments_P300_lp.mrc"].FromMap () cx_SRC1 = self.oms["complex_segments_SRC1_lp.mrc"].FromMap () cx_SRC2 = self.oms["complex_segments_SRC2_lp.mrc"].FromMap () ab_all = self.oms["ab_seg5_all.mrc"].FromMap () ab_ER = self.oms["ab_seg5_ER.mrc"].FromMap () ab_P300 = self.oms["ab_seg5_P300.mrc"].FromMap () ab_SRC1 = self.oms["ab_seg5_SRC1.mrc"].FromMap () ab_SRC2 = self.oms["ab_seg5_SRC2.mrc"].FromMap () ab_AB = self.oms["ab_seg5_AB.mrc"].FromMap () cx = [cx_ER, cx_P300, cx_SRC1, cx_SRC2] ab = [ab_ER, ab_P300, ab_SRC1, ab_SRC2] f_ab_ER = self.oms["f_ab_seg_ER.mrc"].FromMap () f_ab_P300 = self.oms["f_ab_seg_P300.mrc"].FromMap () f_ab_SRC2 = self.oms["f_ab_seg_SRC3a.mrc"].FromMap () f_ab_SRC1 = self.oms["f_ab_seg_SRC3b.mrc"].FromMap () f_cx_ER = self.oms["f_cx_seg_ER.mrc"].FromMap () f_cx_P300 = self.oms["f_cx_seg_P300.mrc"].FromMap () f_cx_SRC1 = self.oms["f_cx_seg_SRC1.mrc"].FromMap () f_cx_SRC2 = self.oms["f_cx_seg_SRC2.mrc"].FromMap () f2_ab_ER = self.oms["f2_ab_seg_ER.mrc"].FromMap () f2_ab_P300 = self.oms["f2_ab_seg_P300.mrc"].FromMap () f2_ab_SRC2 = self.oms["f2_ab_seg_SRC3a.mrc"].FromMap () f2_ab_SRC1 = self.oms["f2_ab_seg_SRC3b.mrc"].FromMap () f2_cx_ER = self.oms["f2_cx_seg_ER.mrc"].FromMap () f2_cx_P300 = self.oms["f2_cx_seg_P300.mrc"].FromMap () f2_cx_SRC1 = self.oms["f2_cx_seg_SRC1.mrc"].FromMap () f2_cx_SRC2 = self.oms["f2_cx_seg_SRC2.mrc"].FromMap () MOVIE = Movie ( self, "ER_Complex_align" ) frameMul = 30 t = 0; d = 0 MOVIE.add ( Hide (t, cx + ab + [ab_AB] ) ) MOVIE.add ( Show (t, [cx_all, ab_all] ) ) MOVIE.add ( SetAlpha ( t, [cx_all, ab_all] + ab + cx, 1.0 ) ) MOVIE.add ( SetThr ( t, cx + ab, .02 ) ) MOVIE.add ( SetThr ( t, ab_AB, .005 ) ) MOVIE.add ( XfInterpM2 (t, t, cx_all, cx_all, pos1, cx) ) MOVIE.add ( XfInterpM2 (t, t, ab_all, ab_all, pos2, ab+[ab_AB]) ) t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all], cx_all.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_all], ab_all.comv, [0,1,0], 360.0) ) # fade complex, bring up seg1 t += d; d = 3 * frameMul MOVIE.add ( Show ( t, cx+ab+[ab_AB] ) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_all, 0.5, 0.0) ) MOVIE.add ( VaryAlpha ( t, t+d, ab_all, 0.5, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, ab, 0.03, 0.02 ) ) MOVIE.add ( VaryThr ( t, t+d, ab_AB, 0.03, 0.005 ) ) MOVIE.add ( VaryThr ( t, t+d, cx, 6, 2 ) ) MOVIE.add ( Hide ( t+d, [cx_all, ab_all] ) ) t += d; d = 3 * frameMul t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, cx, cx_all.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, ab + [ab_AB], ab_all.comv, [0,1,0], 360.0) ) t += d; d = 6 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab_ER, ab_ER, f_ab_ER, []) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_P300, ab_P300, f_ab_P300, [ab_AB]) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_SRC1, ab_SRC1, f_ab_SRC1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_SRC2, ab_SRC2, f_ab_SRC2, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_ER, cx_ER, f_cx_ER, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_P300, cx_P300, f_cx_P300, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_SRC1, cx_SRC1, f_cx_SRC1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_SRC2, cx_SRC2, f_cx_SRC2, []) ) #MOVIE.add ( VaryAlpha ( t, t+d, ab, 1.0, 0.3) ) t += d; d = 12 * frameMul MOVIE.add ( RotateM (t, t+d, [ab_ER], ab_ER.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_P300, ab_AB], ab_P300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_SRC1], ab_SRC1.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_SRC2], ab_SRC2.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_ER], cx_ER.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_P300], cx_P300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_SRC1], cx_SRC1.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_SRC2], cx_SRC2.comv, [0,1,0], 360.0) ) t += d; d = 3 * frameMul t += d; d = 6 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab_ER, ab_ER, f2_ab_ER, []) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_P300, ab_P300, f2_ab_P300, [ab_AB]) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_SRC1, ab_SRC1, f2_ab_SRC1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_SRC2, ab_SRC2, f2_ab_SRC2, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_ER, cx_ER, f2_cx_ER, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_P300, cx_P300, f2_cx_P300, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_SRC1, cx_SRC1, f2_cx_SRC1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_SRC2, cx_SRC2, f2_cx_SRC2, []) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_ER, 1.0, 0.4) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_P300, 1.0, 0.4) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_SRC1, 1.0, 0.4) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_SRC2, 1.0, 0.4) ) t += d; d = 12 * frameMul MOVIE.add ( RotateM (t, t+d, [ab_ER], ab_ER.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_P300, ab_AB], ab_P300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_SRC1], ab_SRC1.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_SRC2], ab_SRC2.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_ER], cx_ER.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_P300], cx_P300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_SRC1], cx_SRC1.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_SRC2], cx_SRC2.comv, [0,1,0], 360.0) ) MOVIE.make() def ER_Complex_AB0 ( self ) : self.ClearFrames () self.GetAllAMods() posi = self.oms["complex.mrc"].FromMap () pos1 = self.oms["complex1.mrc"].FromMap () pos2 = self.oms["complex2.mrc"].FromMap () cx_all = self.oms["ab0-seg6_all.mrc"].FromMap () cx_ER = self.oms["ab0-seg6_ER.mrc"].FromMap () cx_P300 = self.oms["ab0-seg6_P300.mrc"].FromMap () cx_SRC1 = self.oms["ab0-seg6_SRC1.mrc"].FromMap () cx_SRC2 = self.oms["ab0-seg6_SRC2.mrc"].FromMap () ab_all = self.oms["ab_seg5_all.mrc"].FromMap () ab_ER = self.oms["ab_seg5_ER.mrc"].FromMap () ab_P300 = self.oms["ab_seg5_P300.mrc"].FromMap () ab_SRC1 = self.oms["ab_seg5_SRC1.mrc"].FromMap () ab_SRC2 = self.oms["ab_seg5_SRC2.mrc"].FromMap () ab_AB = self.oms["ab_seg5_AB.mrc"].FromMap () cx = [cx_ER, cx_P300, cx_SRC1, cx_SRC2] ab = [ab_ER, ab_P300, ab_SRC1, ab_SRC2] f_ab_ER = self.oms["f_ab_seg_ER.mrc"].FromMap () f_ab_P300 = self.oms["f_ab_seg_P300.mrc"].FromMap () f_ab_SRC2 = self.oms["f_ab_seg_SRC3a.mrc"].FromMap () f_ab_SRC1 = self.oms["f_ab_seg_SRC3b.mrc"].FromMap () f_cx_ER = self.oms["f_cx_seg_ER.mrc"].FromMap () f_cx_P300 = self.oms["f_cx_seg_P300.mrc"].FromMap () f_cx_SRC1 = self.oms["f_cx_seg_SRC1.mrc"].FromMap () f_cx_SRC2 = self.oms["f_cx_seg_SRC2.mrc"].FromMap () f2_ab_ER = self.oms["f2_ab0-seg5_ER.mrc"].FromMap () f2_ab_P300 = self.oms["f2_ab0-seg5_P300.mrc"].FromMap () f2_ab_SRC2 = self.oms["f2_ab0-seg5_SRC2.mrc"].FromMap () f2_ab_SRC1 = self.oms["f2_ab0-seg5_SRC1.mrc"].FromMap () f2_cx_ER = self.oms["f2_cx_seg_ER.mrc"].FromMap () f2_cx_P300 = self.oms["f2_cx_seg_P300.mrc"].FromMap () f2_cx_SRC1 = self.oms["f2_cx_seg_SRC1.mrc"].FromMap () f2_cx_SRC2 = self.oms["f2_cx_seg_SRC2.mrc"].FromMap () MOVIE = Movie ( self, "ER_Complex_AB0" ) frameMul = 30 t = 0; d = 0 MOVIE.add ( Hide (t, cx + ab + [ab_AB] ) ) MOVIE.add ( Show (t, [cx_all, ab_all] ) ) MOVIE.add ( SetAlpha ( t, [cx_all, ab_all] + ab + cx, 1.0 ) ) MOVIE.add ( SetThr ( t, cx, .01 ) ) MOVIE.add ( SetThr ( t, ab, .01 ) ) MOVIE.add ( SetThr ( t, ab_AB, .005 ) ) MOVIE.add ( XfInterpM2 (t, t, cx_all, cx_all, pos1, cx) ) MOVIE.add ( XfInterpM2 (t, t, ab_all, ab_all, pos2, ab+[ab_AB]) ) t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all], cx_all.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_all], ab_all.comv, [0,1,0], 360.0) ) # fade complex, bring up seg1 t += d; d = 3 * frameMul MOVIE.add ( Show ( t, cx+ab+[ab_AB] ) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_all, 0.5, 0.0) ) MOVIE.add ( VaryAlpha ( t, t+d, ab_all, 0.5, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, ab, 0.03, 0.02 ) ) MOVIE.add ( VaryThr ( t, t+d, ab_AB, 0.03, 0.005 ) ) MOVIE.add ( VaryThr ( t, t+d, cx, 0.03, 0.01 ) ) MOVIE.add ( Hide ( t+d, [cx_all, ab_all] ) ) t += d; d = 3 * frameMul t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, cx, cx_all.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, ab + [ab_AB], ab_all.comv, [0,1,0], 360.0) ) t += d; d = 6 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab_ER, ab_ER, f_ab_ER, []) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_P300, ab_P300, f_ab_P300, [ab_AB]) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_SRC1, ab_SRC1, f_ab_SRC1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_SRC2, ab_SRC2, f_ab_SRC2, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_ER, cx_ER, f_cx_ER, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_P300, cx_P300, f_cx_P300, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_SRC1, cx_SRC1, f_cx_SRC1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_SRC2, cx_SRC2, f_cx_SRC2, []) ) #MOVIE.add ( VaryAlpha ( t, t+d, ab, 1.0, 0.3) ) t += d; d = 12 * frameMul MOVIE.add ( RotateM (t, t+d, [ab_ER], ab_ER.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_P300, ab_AB], ab_P300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_SRC1], ab_SRC1.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_SRC2], ab_SRC2.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_ER], cx_ER.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_P300], cx_P300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_SRC1], cx_SRC1.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_SRC2], cx_SRC2.comv, [0,1,0], 360.0) ) t += d; d = 3 * frameMul t += d; d = 6 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab_ER, ab_ER, f2_ab_ER, []) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_P300, ab_P300, f2_ab_P300, [ab_AB]) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_SRC1, ab_SRC1, f2_ab_SRC1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_SRC2, ab_SRC2, f2_ab_SRC2, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_ER, cx_ER, f2_cx_ER, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_P300, cx_P300, f2_cx_P300, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_SRC1, cx_SRC1, f2_cx_SRC1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_SRC2, cx_SRC2, f2_cx_SRC2, []) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_ER, 1.0, 0.4) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_P300, 1.0, 0.4) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_SRC1, 1.0, 0.4) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_SRC2, 1.0, 0.4) ) t += d; d = 12 * frameMul MOVIE.add ( RotateM (t, t+d, [ab_ER], ab_ER.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_P300, ab_AB], ab_P300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_SRC1], ab_SRC1.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_SRC2], ab_SRC2.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_ER], cx_ER.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_P300], cx_P300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_SRC1], cx_SRC1.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_SRC2], cx_SRC2.comv, [0,1,0], 360.0) ) MOVIE.make() def ER_AFAB ( self ) : self.ClearFrames () self.GetAllAMods() cx_pos0 = self.oms["0_CX.mrc"].FromMap () af_pos0 = self.oms["0_AF1AB.mrc"].FromMap () cx_pos1 = self.oms["1_CX.mrc"].FromMap () af_pos1 = self.oms["1_AF1AB.mrc"].FromMap () cx_pos2 = self.oms["2_CX.mrc"].FromMap () af_pos2 = self.oms["2_AF1AB.mrc"].FromMap () cx_all = self.oms["CX.mrc"].FromMap () cx_ER = self.oms["CX_ER.mrc"].FromMap () cx_P300 = self.oms["CX_P300.mrc"].FromMap () cx_SRC1 = self.oms["CX_SRC1.mrc"].FromMap () cx_SRC2 = self.oms["CX_SRC2.mrc"].FromMap () af_all = self.oms["AF1AB.mrc"].FromMap () af_ER = self.oms["AF1AB_ER.mrc"].FromMap () af_P300 = self.oms["AF1AB_P300.mrc"].FromMap () af_SRC1 = self.oms["AF1AB_SRC1.mrc"].FromMap () af_SRC2 = self.oms["AF1AB_SRC2.mrc"].FromMap () af_DIFF = self.oms["AF1AB_DIFF.mrc"].FromMap () af_DIFF2 = self.oms["AF1AB_DIFF_2.mrc"].FromMap () af_DIFF2i = self.oms["AF1AB_DIFF_2i.mrc"].FromMap () af_DIFF2out = self.oms["AF1AB_DIFF_2_out.mrc"].FromMap () af_iDIFF = self.oms["AF1AB_DIFF_intersectSRC1.mrc"].FromMap () af_iDIFF2 = self.oms["AF1AB_DIFF_2_intersectSRC2.mrc"].FromMap () m_CX = self.oms["3DZU_LBDs-f.pdb"].FromMol () ax2_CX = self.oms["2-fold-axis"].FromSurf () m_AF = self.oms["3DZU_LBDs-f2.pdb"].FromMol () ax2_AF = self.oms["2-fold-axis-2"].FromSurf () cx = [cx_ER, cx_P300, cx_SRC1, cx_SRC2] af = [af_ER, af_P300, af_SRC1, af_SRC2] mcx = [m_CX, ax2_CX] maf = [m_AF, ax2_AF] diffs = [af_DIFF,af_DIFF2,af_DIFF2i,af_DIFF2out,af_iDIFF,af_iDIFF2] MOVIE = Movie ( self, "ER_af1ab" ) frameMul = 30 t = 0; d = 0 MOVIE.add ( Hide (t, cx + af + diffs ) ) MOVIE.add ( Hide (t, mcx + maf ) ) MOVIE.add ( Show (t, [cx_all, af_all] ) ) MOVIE.add ( SetAlpha ( t, [cx_all, af_all] + af + cx + diffs, 1.0 ) ) MOVIE.add ( SetThr ( t, cx, .01 ) ) MOVIE.add ( SetThr ( t, af, .01 ) ) MOVIE.add ( SetThr ( t, af_iDIFF, .5 ) ) MOVIE.add ( SetThr ( t, af_iDIFF2, .44 ) ) MOVIE.add ( SetThr ( t, af_DIFF, .05 ) ) MOVIE.add ( SetThr ( t, af_DIFF2, .05 ) ) MOVIE.add ( SetThr ( t, af_DIFF2i, .05 ) ) if 0 : # reset MOVIE.add ( XfInterpM2 (t, t, cx_all, cx_all, cx_pos1, cx+mcx) ) MOVIE.add ( XfInterpM2 (t, t, af_all, af_all, af_pos1, af+diffs+maf) ) MOVIE.make() return MOVIE.add ( XfInterpM2 (t, t, cx_all, cx_all, cx_pos0, cx+mcx) ) MOVIE.add ( XfInterpM2 (t, t, af_all, af_all, af_pos0, af+diffs+maf) ) # show cx, af, rotate around y t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [0,-1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [0,-1,0], 360.0) ) # move them together t += d; d = 3 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, cx_all, 1.0, 0.4) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_all, cx_all, cx_pos1, cx+mcx) ) MOVIE.add ( XfInterpM2 (t, t+d, af_all, af_all, af_pos1, af+diffs+maf) ) # rotate around y t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [0,-1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [0,-1,0], 360.0) ) # rotate to bottom view t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [-1,0,0], 90.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [-1,0,0], 90.0) ) # show difference map t += d; d = 3 * frameMul; d2 = 1 * frameMul MOVIE.add ( Show (t, [af_DIFF] ) ) MOVIE.add ( VaryThr ( t, t+d, af_all, 0.1, 1.66 ) ) MOVIE.add ( VaryThr ( t, t+d, af_DIFF, 0.02, 0.04 ) ) #MOVIE.add ( VaryAlpha ( t, t+d2, af_DIFF, 0.3, 1.0) ) # pause, labeling AB t += d; d = 5 * frameMul # move to side view t += d; d = 3 * frameMul MOVIE.add ( SetThr ( t, af_all, .2 ) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_all, cx_all, cx_pos0, cx+mcx) ) MOVIE.add ( XfInterpM2 (t, t+d, af_all, af_all, af_pos0, af+diffs+maf) ) # show segmentations t += d; d = 5 * frameMul MOVIE.add ( Show ( t, cx+af+[af_DIFF] ) ) # fade out cx, af MOVIE.add ( VaryAlpha ( t, t+d, cx_all, 0.5, 0.0) ) MOVIE.add ( VaryAlpha ( t, t+d, af_all, 0.5, 0.0) ) # fill in seg MOVIE.add ( VaryThr ( t, t+d, af_P300, 0.9, 0.6 ) ) MOVIE.add ( VaryThr ( t, t+d, [af_SRC1], 5, 3.6 ) ) MOVIE.add ( VaryThr ( t, t+d, [af_SRC2], 0.5, 0.3 ) ) MOVIE.add ( VaryThr ( t, t+d, [af_ER], 0.5, 0.2 ) ) MOVIE.add ( VaryThr ( t, t+d, cx, 5, 2.5 ) ) # hide cx, af MOVIE.add ( Hide ( t+d, [cx_all, af_all] ) ) # make ER transparent, add docked model t += d; d = 3 * frameMul MOVIE.add ( Show (t, mcx+maf ) ) MOVIE.add ( VaryAlpha ( t, t+d, [cx_ER, cx_SRC1, cx_SRC2, cx_P300], 1.0, 0.3) ) MOVIE.add ( VaryAlpha ( t, t+d, [af_ER, af_SRC1, af_SRC2, af_P300], 1.0, 0.3) ) # pause, point to axis, docked model t += d; d = 5 * frameMul # move right model to center, hide left side t += d; d = 5 * frameMul #MOVIE.add ( XfInterpM2 (t, t, cx_all, cx_all, cx_pos1, cx+mcx) ) MOVIE.add ( Hide (t, cx ) ) MOVIE.add ( Hide (t, mcx ) ) MOVIE.add ( XfInterpM2 (t, t+d, af_all, af_all, af_pos1, af+diffs+maf) ) # rotate to bottom view again t += d; d = 4 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [-1,0,0], 90.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [-1,0,0], 90.0) ) # diff1 - intersection 373 # diff2 - intersection 116 if 1 : # show diff, diff2, rotate diff2 around 2-fold-axis t += d; d = 3 * frameMul MOVIE.add ( Show ( t, [af_DIFF,af_DIFF2i] ) ) MOVIE.add ( VaryAlpha ( t, t+d, [af_SRC1, af_SRC2], 0.3, 0.2) ) MOVIE.add ( RotateM2 (t, t+d, [m_AF, af_DIFF2i], m_AF.comv, [0,0,1], 180.0) ) #t += d; d = 6 * frameMul #t += d; d = 6 * frameMul #MOVIE.add ( RotateM2 (t, t+d, [m_AF, af_DIFF], m_AF.comv, [0,0,1], 180.0) ) # pause for text t += d; d = 3 * frameMul # show intersection volume, bounce diff2 out t += d; d = 3 * frameMul MOVIE.add ( Show ( t, [af_iDIFF2] ) ) MOVIE.add ( XfInterpM2 (t, t+d, af_DIFF2i, af_DIFF2i, af_DIFF2out, []) ) # pause for text t += d; d = 5 * frameMul # fade diff2i out t += d; d = 3 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, [af_DIFF2i], 1.0, 0.0) ) MOVIE.add ( Hide ( t+d, [af_DIFF2i] ) ) # rotate around x t += d; d = 3 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [1,0,0], 60.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [1,0,0], 60.0) ) # rotate around -x t += d; d = 6 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [-1,0,0], 120.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [-1,0,0], 120.0) ) # rotate around x t += d; d = 3 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [1,0,0], 60.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [1,0,0], 60.0) ) # fade diff2i out t += d; d = 3 * frameMul #MOVIE.add ( VaryAlpha ( t, t+d, [af_iDIFF2], 1.0, 0.0) ) MOVIE.add ( Hide ( t, [af_iDIFF2] ) ) if 0 : # show diffs, idiffs, make src3s, diffs, more transparent t += d; d = 6 * frameMul MOVIE.add ( Show ( t, [af_DIFF,af_DIFF2,af_iDIFF,af_iDIFF2] ) ) MOVIE.add ( VaryAlpha ( t, t+d, [af_SRC1, af_SRC2], 0.3, 0.2) ) MOVIE.add ( VaryAlpha ( t, t+d, [af_DIFF, af_DIFF2], 1.0, 0.0) ) MOVIE.add ( Hide (t+d, [af_DIFF, af_DIFF2] ) ) # short pause to show intersecting volumes t += d; d = 3 * frameMul # rotate around x t += d; d = 5 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [1,0,0], 90.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [1,0,0], 90.0) ) # rotate around y t += d; d = 15 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [0,-1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [0,-1,0], 360.0) ) # rotate around x t += d; d = 10 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [-1,0,0], 180.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [-1,0,0], 180.0) ) # rotate around y t += d; d = 15 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [0,-1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [0,-1,0], 360.0) ) # rotate around x t += d; d = 5 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx+mcx, cx_all.comv, [1,0,0], 90.0) ) MOVIE.add ( RotateM (t, t+d, [af_all]+af+diffs+maf, af_all.comv, [1,0,0], 90.0) ) # show diffs, idiffs, make src3s, diffs, more transparent t += d; d = 6 * frameMul MOVIE.add ( Show ( t, [af_DIFF, af_DIFF2] ) ) MOVIE.add ( VaryAlpha ( t, t+d, [af_DIFF, af_DIFF2], 0.0, 0.2) ) MOVIE.make() def ER_AB1 ( self ) : self.ClearFrames () self.GetAllAMods() cx_pos0 = self.oms["0_4ere.mrc"].FromMap () ab_pos0 = self.oms["0_ab.mrc"].FromMap () cx_pos1 = self.oms["1_4ere.mrc"].FromMap () ab_pos1 = self.oms["1_ab.mrc"].FromMap () cx_all = self.oms["4ere.mrc"].FromMap () cx_ER = self.oms["a_4ere_ab2_ER.mrc"].FromMap () cx_P300 = self.oms["a_4ere_ab2_P300.mrc"].FromMap () cx_SRC1 = self.oms["a_4ere_ab2_SRC1.mrc"].FromMap () cx_SRC2 = self.oms["a_4ere_ab2_SRC2.mrc"].FromMap () cx_AB = self.oms["a_4ere_ab2_AB.mrc"].FromMap () ab_all = self.oms["ab.mrc"].FromMap () ab_main = self.oms["a_p300_ab2_main_f.mrc"].FromMap () ab_AB = self.oms["a_p300_ab2_AB_f.mrc"].FromMap () #cx = [cx_ER, cx_P300, cx_SRC1, cx_SRC2, cx_AB] cx = [cx_P300, cx_AB] ab = [ab_main, ab_AB] MOVIE = Movie ( self, "ER_ab1" ) frameMul = 30 t = 0; d = 0 MOVIE.add ( Hide (t, cx + [ab_all] ) ) MOVIE.add ( Show (t, [cx_all] + ab + [cx_AB] ) ) MOVIE.add ( SetAlpha ( t, [cx_all] + cx + ab, 1.0 ) ) #MOVIE.add ( SetThr ( t, cx_all, .04 ) ) MOVIE.add ( SetThr ( t, cx_all, .1 ) ) MOVIE.add ( SetThr ( t, cx_AB, 0.03 ) ) if 0 : # reset MOVIE.add ( XfInterpM2 (t, t, cx_all, cx_all, cx_pos0, cx) ) MOVIE.add ( XfInterpM2 (t, t, ab_all, ab_all, ab_pos0, ab) ) MOVIE.make() return print ab_pos1.mod.name MOVIE.add ( XfInterpM2 (t, t, cx_all, cx_all, cx_pos1, cx) ) MOVIE.add ( XfInterpM2 (t, t, ab_all, ab_all, ab_pos1, ab) ) # show cx, ab, rotate around y t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx, cx_all.comv, [0,-1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_all]+ab, ab_all.comv, [0,-1,0], 360.0) ) # move ab into complex t += d; d = 3 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, [cx_all,cx_AB], 1.0, 0.4) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_all, ab_all, cx_pos1, ab) ) # rotate around y t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx, cx_all.comv, [0,-1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_all]+ab, ab_all.comv, [0,-1,0], 360.0) ) # move ab back t += d; d = 3 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab_all, ab_all, ab_pos1, ab) ) # show segmentations t += d; d = 3 * frameMul MOVIE.add ( Show ( t, cx ) ) MOVIE.add ( SetAlpha ( t, [cx_AB], 1.0 ) ) # fade out cx, af MOVIE.add ( VaryAlpha ( t, t+d, cx_all, 0.5, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, cx_all, .04, .08 ) ) # fill in seg MOVIE.add ( VaryThr ( t, t+d, cx_P300, 0.5, 0.3 ) ) #MOVIE.add ( VaryThr ( t, t+d, [cx_SRC1], 0.2, 0.1 ) ) #MOVIE.add ( VaryThr ( t, t+d, [cx_SRC2], 0.3, 0.14 ) ) #MOVIE.add ( VaryThr ( t, t+d, [cx_ER], 0.3, 0.1 ) ) MOVIE.add ( VaryThr ( t, t+d, [cx_AB], 0.08, 0.03 ) ) # hide cx, af MOVIE.add ( Hide ( t+d, [cx_all] ) ) # move p300s together t += d; d = 3 * frameMul #MOVIE.add ( VaryAlpha ( t, t+d, [cx_SRC1, cx_SRC2, cx_ER], 1.0, 0.0) ) MOVIE.add ( VaryAlpha ( t, t+d, [cx_P300, cx_AB], 1.0, 0.5) ) #MOVIE.add ( Hide ( t+d, [cx_SRC1, cx_SRC2, cx_ER] ) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_all, cx_all, cx_pos0, cx) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_all, ab_all, ab_pos0, ab) ) # rotate around y t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [cx_all]+cx, cx_all.comv, [0,-1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab_all]+ab, ab_all.comv, [0,-1,0], 360.0) ) # move apart t += d; d = 3 * frameMul #MOVIE.add ( Show ( t, [cx_SRC1, cx_SRC2, cx_ER] ) ) #MOVIE.add ( VaryAlpha ( t, t+d, [cx_SRC1, cx_SRC2, cx_ER], 0.0, 1.0) ) MOVIE.add ( VaryAlpha ( t, t+d, [cx_P300, cx_AB], 0.5, 1.0) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_all, cx_all, cx_pos1, cx) ) MOVIE.add ( XfInterpM2 (t, t+d, ab_all, ab_all, ab_pos1, ab) ) t += d; d = 3 * frameMul MOVIE.add ( Show ( t, cx_all ) ) # fade out cx, af MOVIE.add ( VaryAlpha ( t, t+d, cx_all, 0.0, 0.5) ) # pause t += d; d = 1 * frameMul MOVIE.make() def ER2_SEG ( self ) : self.ClearFrames () self.GetAllAMods() posi = self.oms["ab2_p300_posI.mrc"].FromMap () pos1 = self.oms["ab2_p300_pos1.mrc"].FromMap () pos2 = self.oms["ab2_p300_pos2.mrc"].FromMap () ab2_p300 = self.oms["ab2_p300.mrc"].FromMap () ab2_ab = self.oms["ab2_ab.mrc"].FromMap () complex_f = self.oms["cx-ab2_seg_all.mrc"].FromMap () seg1 = [] for i in range (1,5) : s1 = self.oms[ "cx-ab2_seg_%d.mrc" % i ].FromMap () seg1.append ( s1 ) seg1_ab = self.oms[ "cx-ab2_seg_ab.mrc" ].FromMap () MOVIE = Movie ( self, "ER2_SEG" ) frameMul = 30 t = 0; d = 0 MOVIE.add ( Show (t, [complex_f, ab2_p300, ab2_ab] ) ) MOVIE.add ( Hide (t, seg1 + [seg1_ab] ) ) MOVIE.add ( SetThr ( t, seg1+[seg1_ab], 0.01 ) ) MOVIE.add ( SetAlpha ( t, [complex_f] + seg1 + [seg1_ab] + [ab2_p300, ab2_ab], 1.0 ) ) MOVIE.add ( XfInterpM2 (t, t, seg1[0], seg1[0], pos2, [complex_f,seg1[1],seg1[2],seg1[3],seg1_ab]) ) MOVIE.add ( XfInterpM2 (t, t, ab2_p300, ab2_p300, pos1, [ab2_ab]) ) t += d; d = 5 * frameMul # fade complex, bring up seg1 t += d; d = 3 * frameMul MOVIE.add ( Show ( t, seg1+[seg1_ab] ) ) MOVIE.add ( VaryAlpha ( t, t+d, complex_f, 0.5, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg1, 0.06, 0.02 ) ) MOVIE.add ( VaryThr ( t, t+d, [seg1_ab], 0.06, 0.0075 ) ) MOVIE.add ( Hide ( t+d, complex_f ) ) t += d; d = 3 * frameMul # fade P300, ER, SRC t += d; d = 4 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, [seg1[1], seg1[2], seg1[3]], 1.0, 0.0) ) MOVIE.add ( Hide ( t+d, [seg1[1], seg1[2], seg1[3]] ) ) t += d; d = 3 * frameMul # rotate t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [seg1[0], seg1_ab], seg1[0].comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab2_p300, ab2_ab], ab2_p300.comv, [0,1,0], 360.0) ) t += d; d = 1 * frameMul # move P300s together t += d; d = 4 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, seg1[0], seg1[0], posi, [seg1_ab]) ) MOVIE.add ( XfInterpM2 (t, t+d, ab2_p300, ab2_p300, posi, [ab2_ab]) ) MOVIE.add ( VaryAlpha ( t, t+d, [ab2_p300, seg1_ab], 1.0, 0.4 ) ) t += d; d = 1 * frameMul t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [seg1[0], seg1_ab], seg1[0].comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab2_p300, ab2_ab], ab2_p300.comv, [0,1,0], 360.0) ) MOVIE.make() def ER_SEG ( self ) : self.ClearFrames () self.GetAllAMods() complex_f = self.oms["complex_f.mrc"].FromMap () seg1 = [] for i in range (1,81) : if i == 43 : continue s1 = self.oms[ "complex_seg1_%d.mrc" % i ].FromMap () seg1.append ( s1 ) seg13 = [] for i in range (1,4) : s13 = self.oms[ "complex_seg13_%d.mrc" % i ].FromMap () seg13.append ( s13 ) seg14 = [] for i in range (1,3) : sm = self.oms[ "complex_seg14(rep13-2)_%d.mrc" % i ].FromMap () seg14.append ( sm ) seg15 = [] for i in range (1,11) : sm = self.oms[ "complex_seg15(rep14-1)_%d.mrc" % i ].FromMap () seg15.append ( sm ) seg16 = [ self.oms[ "complex_seg16(rep15-2-4-5-7-8-9)_1.mrc" ].FromMap () ] seg17 = [ self.oms[ "complex_seg17_1.mrc" ].FromMap () ] MOVIE = Movie ( self, "ER_SEG" ) frameMul = 30 t = 0; d = 0 MOVIE.add ( Show (t, [complex_f] ) ) MOVIE.add ( Hide (t, seg1 + seg13 + seg14 + seg15 + seg16 + seg17 ) ) MOVIE.add ( SetThr ( t, seg1 + seg13 + seg14 + seg15 + seg16 + seg17, 4.0 ) ) MOVIE.add ( SetAlpha ( t, [complex_f] + seg1 + seg13 + seg14 + seg15 + seg16 + seg17, 1.0 ) ) t += d; d = 3 * frameMul # fade complex, bring up seg1 t += d; d = 3 * frameMul MOVIE.add ( Show ( t, seg1 ) ) MOVIE.add ( VaryAlpha ( t, t+d, complex_f, 1.0, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg1, 31, 3.0 ) ) t += d; d = 5 * frameMul # smoothing and grouping after 13 steps # hide complex, fade seg1, bring up seg13 t += d; d = 5 * frameMul MOVIE.add ( Hide (t, [complex_f] ) ) MOVIE.add ( Show (t, seg13 ) ) MOVIE.add ( VaryAlpha ( t, t+d, seg1, 0.4, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg13, 6, 3) ) # t += d; d = 5 * frameMul # # for i in range (5) : # t += d; d = 1 * frameMul # MOVIE.add ( SetAlpha ( t, seg13[1], 0.7 ) ) # MOVIE.add ( SetThr ( t, seg13[1], 3.5 ) ) # #MOVIE.add ( Select (t, seg13[1] ) ) # t += d; d = 1 * frameMul # #MOVIE.add ( Select (t, [] ) ) # MOVIE.add ( SetAlpha ( t, seg13[1], 1.0 ) ) # MOVIE.add ( SetThr ( t, seg13[1], 3.0 ) ) t += d; d = 1 * frameMul for i in range (9) : t += d; d = 5 MOVIE.add ( VaryThr ( t, t+d, seg13[1], 3, 3.5) ) t += d; d = 5 MOVIE.add ( VaryThr ( t, t+d, seg13[1], 3.5, 3) ) t += d; d = 1 * frameMul # ungroup SRC-ER which are grouped together # hide seg1, fade seg13-2, bring up seg14_rep13_2 t += d; d = 5 * frameMul MOVIE.add ( Hide (t, seg1 ) ) MOVIE.add ( Show (t, seg14 ) ) MOVIE.add ( VaryAlpha ( t, t+d, seg13[1], 0.3, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg14, 5, 3) ) t += d; d = 1 * frameMul for i in range (9) : t += d; d = 5 MOVIE.add ( VaryThr ( t, t+d, seg14[0], 3, 3.5) ) t += d; d = 5 MOVIE.add ( VaryThr ( t, t+d, seg14[0], 3.5, 3) ) t += d; d = 1 * frameMul # ungroup SRC # hide seg13-2, fade seg14-1, bring up seg15_rep14_1 t += d; d = 5 * frameMul MOVIE.add ( Hide (t, seg13[1] ) ) MOVIE.add ( Show (t, seg15 ) ) MOVIE.add ( VaryAlpha ( t, t+d, seg14[0], 0.3, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg15, 5, 3) ) t += d; d = 1 * frameMul A = seg15 for i in range (9) : t += d; d = 5 MOVIE.add ( VaryThr ( t, t+d, [A[1],A[3],A[4],A[6],A[7],A[8]], 3, 3.5) ) t += d; d = 5 MOVIE.add ( VaryThr ( t, t+d, [A[1],A[3],A[4],A[6],A[7],A[8]], 3.5, 3) ) t += d; d = 1 * frameMul # regroup SRC # hide seg14-1, fade seg15_rep14_1[2,4,5,7,8,9], bring up complex_seg16_rep15_2_4_5_7_8_9 t += d; d = 5 * frameMul MOVIE.add ( Hide (t, seg14[0] ) ) MOVIE.add ( Show (t, seg16 ) ) MOVIE.add ( VaryAlpha ( t, t+d, [A[1],A[3],A[4],A[6],A[7],A[8]], 0.3, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg16, 5, 3) ) MOVIE.add ( Hide (t+d, [A[1],A[3],A[4],A[6],A[7],A[8]] ) ) t += d; d = 5 * frameMul # fade out SRCs, ER # hide seg15_rep14_1[2,4,5,7,8,9], fade seg13[1] (SRC), seg14[2] (ER), seg16[1] (SRC) t += d; d = 2 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, [seg13[0], seg14[1], seg16[0]], 1.0, 0.0) ) t += d; d = 1 * frameMul for i in range (9) : t += d; d = 5 MOVIE.add ( VaryThr ( t, t+d, [seg13[2], seg15[0], seg15[2], seg15[5], seg15[9]], 3, 3.5) ) t += d; d = 5 MOVIE.add ( VaryThr ( t, t+d, [seg13[2], seg15[0], seg15[2], seg15[5], seg15[9]], 3.5, 3) ) t += d; d = 1 * frameMul # hide SRC,ER,SRC, fade old p300 seg13[3], seg15[1,3,6,10], group new P300 t += d; d = 5 * frameMul MOVIE.add ( Hide (t, [seg13[0], seg14[1], seg16[0]] ) ) MOVIE.add ( Show (t, seg17 ) ) MOVIE.add ( VaryAlpha ( t, t+d, [seg13[2], seg15[0], seg15[2], seg15[5], seg15[9]], 0.3, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg17, 5, 3) ) t += d; d = 5 * frameMul MOVIE.add ( Hide ( t, [seg13[2], seg15[0], seg15[2], seg15[5], seg15[9]] ) ) MOVIE.make () def ER_p300_AB ( self ) : self.ClearFrames () self.GetAllAMods() print "Visible: " for om in self.visOms : print " - ", om.mod.name posi = self.oms["ab1_p300_i.mrc"].FromMap () pos1 = self.oms["ab1_p300_pos1.mrc"].FromMap () pos2 = self.oms["ab1_p300_pos2.mrc"].FromMap () posA = self.oms["ab1_p300_posA.mrc"].FromMap () posB = self.oms["ab1_p300_posB.mrc"].FromMap () posC = self.oms["ab1_p300_posC.mrc"].FromMap () posD = self.oms["ab1_p300_posD.mrc"].FromMap () ab1_p300 = self.oms["ab1_p300.mrc"].FromMap () ab1_ab = self.oms["ab1_ab.mrc"].FromMap () ab2_p300 = self.oms["ab2_p300.mrc"].FromMap () ab2_ab = self.oms["ab2_ab.mrc"].FromMap () p300f = self.oms["p300f.mrc"].FromMap () p300_loopf = self.oms["p300_loopf.mrc"].FromMap () #for amod in [mol3erd,mol1hcq] : # amod.FromMol () complex_f = self.oms["complex_f.mrc"].FromMap () seg1 = [] for i in range (1,81) : if i == 43 : continue s1 = self.oms[ "complex_seg1_%d.mrc" % i ].FromMap () seg1.append ( s1 ) seg13 = [] for i in range (1,4) : s13 = self.oms[ "complex_seg13_%d.mrc" % i ].FromMap () seg13.append ( s13 ) seg14 = [] for i in range (1,3) : sm = self.oms[ "complex_seg14(rep13-2)_%d.mrc" % i ].FromMap () seg14.append ( sm ) seg15 = [] for i in range (1,11) : sm = self.oms[ "complex_seg15(rep14-1)_%d.mrc" % i ].FromMap () seg15.append ( sm ) seg16 = [ self.oms[ "complex_seg16(rep15-2-4-5-7-8-9)_1.mrc" ].FromMap () ] seg17 = [ self.oms[ "complex_seg17_1.mrc" ].FromMap () ] seg17f = self.oms[ "complex_seg17_1_f.mrc" ].FromMap () seg17fD = self.oms[ "complex_seg17_1_fD.mrc" ].FromMap () MOVIE = Movie ( self, "ER_p300_ab" ) frameMul = 30 t = 0; d = 0 MOVIE.add ( Hide (t, [complex_f] + seg1 + seg13 + seg14 + seg15 + seg16 + seg17 + [seg17f] ) ) # --- p300-ab1&2 MOVIE.add ( XfInterpM2 (0, 0, ab1_p300, ab1_p300, pos1, [ab1_ab]) ) MOVIE.add ( XfInterpM2 (0, 0, ab2_p300, ab2_p300, pos2, [ab2_ab]) ) MOVIE.add ( VaryAlpha ( t, t+d, ab1_p300, 1, 1) ) MOVIE.add ( Hide (t, [p300f, p300_loopf] ) ) MOVIE.add ( XfInterpM2 (t, t, p300f, p300f, pos2, [p300_loopf]) ) MOVIE.add ( VaryThr (t, t, p300f, 0.7, 0.718) ) MOVIE.add ( VaryAlpha ( t, t, p300f, 0, 0) ) MOVIE.add ( Show (t, [ab2_p300, ab2_ab, ab1_p300, ab1_ab] ) ) t += d; d = 3 * frameMul t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab], ab1_p300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab2_p300, ab2_ab], ab2_p300.comv, [0,1,0], 360.0) ) t += d; d = 3 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, ab1_p300, posi, [ab1_ab]) ) MOVIE.add ( XfInterpM2 (t, t+d, ab2_p300, ab2_p300, posi, [ab2_ab]) ) MOVIE.add ( VaryAlpha ( t, t+d, ab1_p300, 1, 0.3) ) t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab, ab2_p300, ab2_ab], ab1_p300.comv, [0,1,0], 360.0) ) t += d; d = 2 * frameMul MOVIE.add ( Hide (t, [ab2_p300, ab2_ab] ) ) MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, posi, pos1, [ab1_ab]) ) MOVIE.add ( VaryAlpha ( t, t+d, ab1_p300, 0.3, 1.0) ) # --- p300-alone t += d; d = 3 * frameMul MOVIE.add ( Show (t, [p300f] ) ) MOVIE.add ( VaryAlpha ( t, t+d, p300f, 0, 1.01) ) t += d; d = 5 * frameMul t += d; d = 6 * frameMul MOVIE.add ( VaryThr ( t, t+d, p300f, 0.718, 0.261) ) t += d; d = 6 * frameMul MOVIE.add ( Show (t, [p300_loopf] ) ) MOVIE.add ( VaryThr ( t, t+d, p300f, 0.261, 0.7179 ) ) t += d; d = 3 * frameMul t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab], ab1_p300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [p300f, p300_loopf], p300f.comv, [0,1,0], 360.0) ) t += d; d = 3 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, ab1_p300, posi, [ab1_ab]) ) MOVIE.add ( XfInterpM2 (t, t+d, p300f, p300f, posi, [p300_loopf]) ) MOVIE.add ( VaryAlpha ( t, t+d, ab1_p300, 1, 0.3) ) t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab, p300f, p300_loopf], ab1_p300.comv, [0,1,0], 360.0) ) t += d; d = 3 * frameMul MOVIE.add ( Hide (t, [p300f, p300_loopf] ) ) MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, posi, pos1, [ab1_ab]) ) # ---- p300-complex if 1 : allseg = seg1 + seg13 + seg14 + seg15 + seg16 + seg17 t += d; d = 3 * frameMul MOVIE.add ( SetThr ( t, allseg, 4.0 ) ) MOVIE.add ( SetAlpha ( t, [complex_f] + allseg, 1.0 ) ) MOVIE.add ( Show (t, [complex_f] ) ) MOVIE.add ( XfInterpM2 (t, t, complex_f, complex_f, pos2, allseg) ) t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab], ab1_p300.comv, [0,1,0], 390.0) ) MOVIE.add ( RotateM (t, t+d, [complex_f]+allseg, complex_f.comv, [0,1,0], 390.0) ) # fade complex, bring up seg1 t += d; d = 3 * frameMul MOVIE.add ( Show ( t, seg1 ) ) MOVIE.add ( VaryAlpha ( t, t+d, complex_f, 1.0, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg1, 31, 3.0 ) ) t += d; d = 5 * frameMul # smoothing and grouping after 13 steps # hide complex, fade seg1, bring up seg13 t += d; d = 5 * frameMul MOVIE.add ( Hide (t, [complex_f] ) ) MOVIE.add ( Show (t, seg13 ) ) MOVIE.add ( VaryAlpha ( t, t+d, seg1, 0.4, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg13, 6, 3) ) MOVIE.add ( Hide (t+d, seg1 ) ) t += d; d = 1 * frameMul MOVIE.add ( Select ( t, [ seg13[1] ] ) ) for i in range (frameMul/2) : t += d; d = 3 MOVIE.add ( VaryThr ( t, t+d, seg13[1], 3, 3.5) ) t += d; d = 3 MOVIE.add ( VaryThr ( t, t+d, seg13[1], 3.5, 3) ) t += d; d = 1 * frameMul # ungroup SRC-ER which are grouped together # fade seg13-2, bring up seg14_rep13_2 t += d; d = 3 * frameMul MOVIE.add ( Select ( t, [] ) ) MOVIE.add ( Show (t, seg14 ) ) MOVIE.add ( VaryAlpha ( t, t+d, seg13[1], 0.3, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg14, 5, 3) ) MOVIE.add ( Hide (t+d, seg13[1] ) ) t += d; d = 1 * frameMul MOVIE.add ( Select ( t, [ seg14[0] ] ) ) for i in range (frameMul/2) : t += d; d = 3 MOVIE.add ( VaryThr ( t, t+d, seg14[0], 3, 3.5) ) t += d; d = 3 MOVIE.add ( VaryThr ( t, t+d, seg14[0], 3.5, 3) ) t += d; d = 1 * frameMul # ungroup SRC # fade seg14-1, bring up seg15_rep14_1 t += d; d = 3 * frameMul MOVIE.add ( Select ( t, [] ) ) MOVIE.add ( Show (t, seg15 ) ) MOVIE.add ( VaryAlpha ( t, t+d, seg14[0], 0.3, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg15, 5, 3) ) MOVIE.add ( Hide (t+d, seg14[0] ) ) t += d; d = 1 * frameMul A = seg15 MOVIE.add ( Select ( t, [ A[1],A[3],A[4],A[6],A[7],A[8] ] ) ) for i in range (frameMul/2) : t += d; d = 3 MOVIE.add ( VaryThr ( t, t+d, [A[1],A[3],A[4],A[6],A[7],A[8]], 3, 3.5) ) t += d; d = 3 MOVIE.add ( VaryThr ( t, t+d, [A[1],A[3],A[4],A[6],A[7],A[8]], 3.5, 3) ) t += d; d = 1 * frameMul # regroup SRC # fade seg15_rep14_1[2,4,5,7,8,9], bring up complex_seg16_rep15_2_4_5_7_8_9 t += d; d = 3 * frameMul MOVIE.add ( Select ( t, [] ) ) MOVIE.add ( Show (t, seg16 ) ) MOVIE.add ( VaryAlpha ( t, t+d, [A[1],A[3],A[4],A[6],A[7],A[8]], 0.3, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg16, 5, 3) ) MOVIE.add ( Hide (t+d, [A[1],A[3],A[4],A[6],A[7],A[8]] ) ) t += d; d = 5 * frameMul # fade out SRCs, ER # hide seg15_rep14_1[2,4,5,7,8,9], fade seg13[1] (SRC), seg14[2] (ER), seg16[1] (SRC) t += d; d = 3 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, [seg13[0], seg14[1], seg16[0]], 1.0, 0.0) ) MOVIE.add ( Hide (t+d, [seg13[0], seg14[1], seg16[0]] ) ) # t += d; d = 1 * frameMul # MOVIE.add ( Select ( t, [seg13[2], seg15[0], seg15[2], seg15[5], seg15[9]] ) ) # # for i in range (frameMul/2) : # t += d; d = 3 # MOVIE.add ( VaryThr ( t, t+d, [seg13[2], seg15[0], seg15[2], seg15[5], seg15[9]], 3, 3.5) ) # t += d; d = 3 # MOVIE.add ( VaryThr ( t, t+d, [seg13[2], seg15[0], seg15[2], seg15[5], seg15[9]], 3.5, 3) ) # # t += d; d = 1 * frameMul # hide SRC,ER,SRC, fade old p300 seg13[3], seg15[1,3,6,10], group new P300 t += d; d = 3 * frameMul MOVIE.add ( Select ( t, [] ) ) MOVIE.add ( Show (t, seg17 ) ) MOVIE.add ( VaryAlpha ( t, t+d, [seg13[2], seg15[0], seg15[2], seg15[5], seg15[9]], 0.3, 0.0) ) MOVIE.add ( VaryThr ( t, t+d, seg17, 5, 3) ) MOVIE.add ( Hide ( t+d, [seg13[2], seg15[0], seg15[2], seg15[5], seg15[9]] ) ) t += d; d = 3 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, ab1_p300, posi, [ab1_ab]) ) MOVIE.add ( VaryAlpha ( t, t+d, ab1_p300, 1, 0.3) ) MOVIE.add ( XfInterpM2 (t, t+d, seg17[0], seg17[0], seg17f, []) ) t += d; d = 2 * frameMul t += d; d = 3 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab, seg17[0]], ab1_p300.comv, [0,1,0], 90.0) ) t += d; d = 5 * frameMul t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab, seg17[0]], ab1_p300.comv, [0,1,0], 270) ) # zoom out t += d; d = 3 * frameMul #MOVIE.add ( Scale (t, t+d, 0.5 ) ) MOVIE.add ( Show (t, [ab2_p300, ab2_ab, ab1_p300, ab1_ab, p300f, p300_loopf, seg17[0]] ) ) if 0 : MOVIE.add ( XfInterpM2 (t, t, seg17[0], seg17[0], seg17fD, []) ) MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, ab1_p300, posA, [ab1_ab]) ) MOVIE.add ( VaryAlpha ( t, t+d, ab1_p300, 0.3, 1.0) ) MOVIE.add ( XfInterpM2 (t, t+d, ab2_p300, ab2_p300, posB, [ab2_ab]) ) MOVIE.add ( XfInterpM2 (t, t+d, p300f, p300f, posC, [p300_loopf]) ) MOVIE.add ( XfInterpM2 (t, t+d, seg17[0], seg17[0], seg17fD, []) ) t += d; d = 2 * frameMul t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab], ab1_p300.comv, [0,1,0], 360) ) MOVIE.add ( RotateM (t, t+d, [ab2_p300, ab2_ab], ab2_p300.comv, [0,1,0], 360) ) MOVIE.add ( RotateM (t, t+d, [p300f, p300_loopf], posC.comv, [0,1,0], 360) ) MOVIE.add ( RotateM (t, t+d, [seg17[0]], seg17[0].comv, [0,1,0], 360) ) t += d; d = 2 * frameMul MOVIE.add ( Show (t, [seg17[0]] ) ) MOVIE.make () def ER_f1 ( self ) : self.ClearFrames () self.GetAllAMods() print "Visible: " for om in self.visOms : print " - ", om.mod.name posi = self.oms["ab1_p300_i.mrc"].FromMap () pos1 = self.oms["ab1_p300_pos1.mrc"].FromMap () pos2 = self.oms["ab1_p300_pos2.mrc"].FromMap () posA = self.oms["ab1_p300_posA.mrc"].FromMap () posB = self.oms["ab1_p300_posB.mrc"].FromMap () posC = self.oms["ab1_p300_posC.mrc"].FromMap () ab1_p300 = self.oms["ab1_p300.mrc"].FromMap () ab1_ab = self.oms["ab1_ab.mrc"].FromMap () ab2_p300 = self.oms["ab2_p300.mrc"].FromMap () ab2_ab = self.oms["ab2_ab.mrc"].FromMap () p300f = self.oms["p300f.mrc"].FromMap () p300_loopf = self.oms["p300_loopf.mrc"].FromMap () MOVIE = Movie ( self, "ER_movie_1" ) frameMul = 30 t = 0; d = 0 # --- p300-ab1&2 MOVIE.add ( XfInterpM2 (0, 0, ab1_p300, ab1_p300, pos1, [ab1_ab]) ) MOVIE.add ( XfInterpM2 (0, 0, ab2_p300, ab2_p300, pos2, [ab2_ab]) ) MOVIE.add ( VaryAlpha ( t, t+d, ab1_p300, 1, 1) ) MOVIE.add ( Hide (t, [p300f, p300_loopf] ) ) MOVIE.add ( XfInterpM2 (t, t, p300f, p300f, pos2, [p300_loopf]) ) MOVIE.add ( VaryThr (t, t, p300f, 0.7, 0.718) ) MOVIE.add ( VaryAlpha ( t, t, p300f, 0, 0) ) MOVIE.add ( Show (t, [ab2_p300, ab2_ab, ab1_p300, ab1_ab] ) ) t += d; d = 3 * frameMul t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab], ab1_p300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [ab2_p300, ab2_ab], ab2_p300.comv, [0,1,0], 360.0) ) t += d; d = 3 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, ab1_p300, posi, [ab1_ab]) ) MOVIE.add ( XfInterpM2 (t, t+d, ab2_p300, ab2_p300, posi, [ab2_ab]) ) MOVIE.add ( VaryAlpha ( t, t+d, ab1_p300, 1, 0.3) ) t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab, ab2_p300, ab2_ab], ab1_p300.comv, [0,1,0], 360.0) ) t += d; d = 2 * frameMul MOVIE.add ( Hide (t, [ab2_p300, ab2_ab] ) ) MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, posi, pos1, [ab1_ab]) ) MOVIE.add ( VaryAlpha ( t, t+d, ab1_p300, 0.3, 1.0) ) # --- p300-alone t += d; d = 3 * frameMul MOVIE.add ( Show (t, [p300f] ) ) MOVIE.add ( VaryAlpha ( t, t+d, p300f, 0, 1.01) ) t += d; d = 5 * frameMul t += d; d = 6 * frameMul MOVIE.add ( VaryThr ( t, t+d, p300f, 0.718, 0.261) ) t += d; d = 6 * frameMul MOVIE.add ( Show (t, [p300_loopf] ) ) MOVIE.add ( VaryThr ( t, t+d, p300f, 0.261, 0.7179 ) ) t += d; d = 3 * frameMul t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab], ab1_p300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [p300f, p300_loopf], p300f.comv, [0,1,0], 360.0) ) t += d; d = 3 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, ab1_p300, posi, [ab1_ab]) ) MOVIE.add ( XfInterpM2 (t, t+d, p300f, p300f, posi, [p300_loopf]) ) MOVIE.add ( VaryAlpha ( t, t+d, ab1_p300, 1, 0.3) ) t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab, p300f, p300_loopf], ab1_p300.comv, [0,1,0], 360.0) ) # zoom out t += d; d = 3 * frameMul #MOVIE.add ( Scale (t, t+d, 0.5 ) ) MOVIE.add ( Show (t, [ab2_p300, ab2_ab, ab1_p300, ab1_ab, p300f, p300_loopf] ) ) MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, ab1_p300, posA, [ab1_ab]) ) MOVIE.add ( VaryAlpha ( t, t+d, ab1_p300, 0.3, 1.0) ) MOVIE.add ( XfInterpM2 (t, t+d, ab2_p300, ab2_p300, posB, [ab2_ab]) ) MOVIE.add ( XfInterpM2 (t, t+d, p300f, p300f, posC, [p300_loopf]) ) t += d; d = 2 * frameMul t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab], ab1_p300.comv, [0,1,0], 360) ) MOVIE.add ( RotateM (t, t+d, [ab2_p300, ab2_ab], ab2_p300.comv, [0,1,0], 360) ) MOVIE.add ( RotateM (t, t+d, [p300f, p300_loopf], posC.comv, [0,1,0], 360) ) t += d; d = 2 * frameMul MOVIE.add ( Show (t, [p300f] ) ) MOVIE.make () def ER_f2 ( self ) : self.ClearFrames () self.GetAllAMods() print "Visible: " for om in self.visOms : print " - ", om.mod.name pos1 = self.oms["ab1_p300_pos1.mrc"].FromMap () pos2 = self.oms["ab1_p300_pos2.mrc"].FromMap () pos3 = self.oms["ab1_p300_pos3.mrc"].FromMap () ab1_p300 = self.oms["ab1_p300.mrc"].FromMap () ab1_ab = self.oms["ab1_ab.mrc"].FromMap () ab2_p300 = self.oms["ab2_p300.mrc"].FromMap () ab2_ab = self.oms["ab2_ab.mrc"].FromMap () p300f = self.oms["p300f.mrc"].FromMap () p300_loopf = self.oms["p300_loopf.mrc"].FromMap () cx = self.oms["complex_all_seg_lp.mrc"].FromMap () cx_ER = self.oms["cx_seg_ER.mrc"].FromMap () cx_SRC1 = self.oms["cx_seg_SRC1.mrc"].FromMap () cx_SRC2 = self.oms["cx_seg_SRC2.mrc"].FromMap () cx_P300 = self.oms["cx_seg_P300.mrc"].FromMap () cx_P300_pos1 = self.oms["cx_seg_P300_pos1.mrc"].FromMap () cx_P300_pos3 = self.oms["cx_seg_P300_pos3.mrc"].FromMap () MOVIE = Movie ( self, "ER_movie_2" ) frameMul = 30 t = 0; d = 0 # --- p300-ab1&2 MOVIE.add ( XfInterpM2 (0, 0, ab1_p300, ab1_p300, pos1, [ab1_ab]) ) MOVIE.add ( XfInterpM2 (0, 0, cx_P300, cx_P300, cx_P300_pos1, []) ) MOVIE.add ( SetAlpha ( 0, [cx, ab1_p300, cx_P300, cx_ER, cx_SRC1, cx_SRC2], 1) ) MOVIE.add ( Hide (t, [pos1, pos2, pos3, cx_ER, cx_SRC1, cx_SRC2, cx_P300, cx_P300_pos3] ) ) MOVIE.add ( Show (t, [ab1_p300, ab1_ab, cx] ) ) t += d; d = 3 * frameMul t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab], ab1_p300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx], cx.comv, [0,1,0], 360.0) ) t += d; d = 3 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, ab1_p300, pos2, [ab1_ab]) ) MOVIE.add ( VaryAlpha ( t, t+d, cx, 1, 0.4) ) t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab, cx], cx.comv, [0,1,0], 360.0) ) t += d; d = 3 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, ab1_p300, pos1, [ab1_ab]) ) # show seg t += d; d = 4 * frameMul #MOVIE.add ( Show (t, [cx_ER, cx_SRC1, cx_SRC2, cx_P300] ) ) #MOVIE.add ( VaryThr ( t, t+d, [cx_ER, cx_SRC1, cx_SRC2, cx_P300], 3.5, 3) ) MOVIE.add ( Show (t, [cx_P300] ) ) MOVIE.add ( VaryThr ( t, t+d, [cx_P300], 3.5, 3) ) MOVIE.add ( VaryAlpha ( t, t+d, cx, 0.4, 0.4) ) #MOVIE.add ( Hide (t+d, [cx] ) ) #t += d; d = 5 * frameMul # hide ER, SRCs t += d; d = 3 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, [cx], 0.4, 0) ) MOVIE.add ( Hide (t+d, [cx] ) ) # bring P300-ab1, cx-p300 together t += d; d = 3 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, ab1_p300, pos3, [ab1_ab]) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_P300, cx_P300, cx_P300_pos3, []) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_P300, 1, 0.4) ) # rotate P300-ab1, cx-p300 t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab, cx_P300], cx_P300.comv, [0,1,0], 360.0) ) # bring P300-ab1, cx-p300 back out t += d; d = 3 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, ab1_p300, ab1_p300, pos1, [ab1_ab]) ) MOVIE.add ( XfInterpM2 (t, t+d, cx_P300, cx_P300, cx_P300_pos1, []) ) MOVIE.add ( VaryAlpha ( t, t+d, cx_P300, 0.4, 1.0) ) # rotate them separately t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [ab1_p300, ab1_ab], ab1_p300.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_P300], cx_P300.comv, [0,1,0], 360.0) ) # show ER, SRCs t += d; d = 2 * frameMul MOVIE.add ( Show (t, [cx] ) ) MOVIE.add ( VaryAlpha ( t, t+d, [cx], 0, 0.4) ) # un-transparent-ify t += d; d = 2 * frameMul MOVIE.add ( SetAlpha ( t, [ab1_p300, cx_P300, cx_ER, cx_SRC1, cx_SRC2], 1) ) MOVIE.make () def ER_p300 ( self ) : self.ClearFrames () self.GetAllAMods() print "Visible: " for om in self.visOms : print " - ", om.mod.name p300 = self.oms["p300.mrc"] p300_loop = self.oms["p300_loop.mrc"] p300_main = self.oms["p300_main.mrc"] for amod in [p300, p300_loop, p300_main] : amod.FromMap () #for amod in [mol3erd,mol1hcq] : # amod.FromMol () MOVIE = Movie ( self, "ER_p300_0" ) frameMul = 30 t = 0; d = 0 MOVIE.add ( Hide (t, [p300_loop, p300_main] ) ) t += d; d = 9 * frameMul MOVIE.add ( VaryThr ( t, t+d, p300, 0.718, 0.261) ) t += d; d = 9 * frameMul MOVIE.add ( Show (t, [p300_loop, p300_main] ) ) MOVIE.add ( VaryThr ( t, t+d, p300, 0.261, 0.7179 ) ) MOVIE.make () def ER ( self ) : self.ClearFrames () self.GetAllAMods() print "Visible: " for om in self.visOms : print " - ", om.mod.name cx = self.oms["complex_all_seg_lp.mrc"] p300 = self.oms["complex_segments_P300_lp.mrc"] p300e = self.oms["complex_segments_P300_lpe.mrc"] p300o = self.oms["complex_segments_P300_lpo.mrc"] src1 = self.oms["complex_segments_SRC1_lp.mrc"] src1_2 = self.oms["complex_segments_SRC1_lp2.mrc"] src1_top = self.oms["complex_segments_SRC1_lp_top.mrc"] #src1f = self.oms["complex_segments_SRC1_lp_f.mrc"] src1e = self.oms["complex_segments_SRC1_lpe.mrc"] src1o = self.oms["complex_segments_SRC1_lpo.mrc"] src2 = self.oms["complex_segments_SRC2_lp.mrc"] src2_2 = self.oms["complex_segments_SRC2_lp2.mrc"] src2e = self.oms["complex_segments_SRC2_lpe.mrc"] src2o = self.oms["complex_segments_SRC2_lpo.mrc"] src2_top = self.oms["complex_segments_SRC2_lp_top.mrc"] #src2e2 = self.oms["complex_segments_SRC2_lpe2.mrc"] er = self.oms["complex_segments_ER_lp.mrc"] ere = self.oms["complex_segments_ER_lpe.mrc"] er_top = self.oms["complex_segments_ER_lpe_top.mrc"] mol3erd = self.oms["3erdf.pdb"] mol1hcq = self.oms["1hcqf.pdb"] ax2f = self.oms["2-fold"] ax2fa = self.oms["2-fold-axis"] p300_noab = self.oms["p300-noAB_f_lp5.mrc"] p300_ab1 = self.oms["p300-ab1-lp20-resample-lp5_main.mrc"] p300_ab1a = self.oms["p300-ab1-lp20-resample-lp5_ab.mrc"] p300_ab2 = self.oms["p300-ab2-lp20-resample_main.mrc"] p300_ab2a = self.oms["p300-ab2-lp20-resample_ab.mrc"] for amod in [cx, p300, src1, src2, er, p300e, src1e, src2e, src1o, src2o, ere, src2_top, src1_top, src1_2, src2_2, er_top, p300o, p300_ab2, p300_ab2a, p300_ab1, p300_ab1a, p300_noab] : amod.FromMap () for amod in [mol3erd,mol1hcq] : amod.FromMol () MOVIE = Movie ( self, "ER_1" ) #print " - ", anchor.V[2,0], anchor.V[2,1], anchor.V[2,2] #ax = chimera.Vector ( 0, 0, 1 ) ax = chimera.Vector ( -cx.V[2,0], -cx.V[2,1], -cx.V[2,2] ) ax.normalize() frameMul = 10 t = 0; d = 6 * frameMul MOVIE.add ( Show (t, [cx] ) ) MOVIE.add ( VaryAlpha ( t, t, cx, 1, 1) ) MOVIE.add ( VaryAlpha ( t, t, p300, 1, 1) ) MOVIE.add ( VaryAlpha ( t, t, src1, 1, 1) ) MOVIE.add ( VaryAlpha ( t, t, src2, 1, 1) ) MOVIE.add ( VaryAlpha ( t, t, er, 1, 1) ) MOVIE.add ( Hide (t, [p300,src1,src2,er,mol3erd,mol1hcq,ax2f,ax2fa,p300_noab,p300_ab1,p300_ab1a,p300_ab2,p300_ab2a] ) ) if 1 : t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [cx], cx.comv, [0,1,0], 360.0) ) #MOVIE.make () #return #MOVIE.add ( Rotate (t, t+d, self.oms, cx.COM, ax, 360.0) ) #MOVIE.add ( Hide (t+d, [prot] ) ) t += d; d = 9 * frameMul MOVIE.add ( Show (t, [p300,src1,src2,er] ) ) MOVIE.add ( VaryThr ( t, t+d, p300, 15, 3) ) MOVIE.add ( VaryThr ( t, t+d, src1, 15, 3) ) MOVIE.add ( VaryThr ( t, t+d, src2, 15, 3) ) MOVIE.add ( VaryThr ( t, t+d, er, 15, 3) ) MOVIE.add ( VaryAlpha ( t, t+d, cx, 1, 0) ) t += d; d = 15 * frameMul t += d; d = 15 * frameMul MOVIE.add ( Hide (t, [cx] ) ) #MOVIE.add ( Rotate (t, t+d, self.oms, cx.COM, ax, 360.0) ) MOVIE.add ( RotateM (t, t+d, [p300, src1, src2, er], p300.comv, [0,1,0], 360.0) ) t += d; d = 3 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, p300, 1, .1) ) MOVIE.add ( VaryAlpha ( t, t+d, src1, 1, .3) ) MOVIE.add ( VaryAlpha ( t, t+d, src2, 1, .3) ) MOVIE.add ( VaryAlpha ( t, t+d, er, 1, .3) ) t += d; d = 15 * frameMul MOVIE.add ( Show (t, [p300_noab] ) ) MOVIE.add ( RotateM (t, t+d, [p300, src1, src2, er, p300_noab], p300.comv, [0,1,0], 360.0) ) MOVIE.add ( Hide (t+d, [p300_noab] ) ) t += d; d = 15 * frameMul MOVIE.add ( Show (t, [p300_ab1,p300_ab1a] ) ) MOVIE.add ( RotateM (t, t+d, [p300, src1, src2, er, p300_ab1, p300_ab1a], p300.comv, [0,1,0], 360.0) ) MOVIE.add ( Hide (t+d, [p300_ab1,p300_ab1a] ) ) t += d; d = 15 * frameMul MOVIE.add ( Show (t, [p300_ab2,p300_ab2a] ) ) MOVIE.add ( RotateM (t, t+d, [p300, src1, src2, er, p300_ab2, p300_ab2a], p300.comv, [0,1,0], 360.0) ) MOVIE.add ( Hide (t+d, [p300_ab2,p300_ab2a] ) ) t += d; d = 3 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, p300, .1, 1) ) MOVIE.add ( VaryAlpha ( t, t+d, src1, .3, 1) ) MOVIE.add ( VaryAlpha ( t, t+d, src2, .3, 1) ) MOVIE.add ( VaryAlpha ( t, t+d, er, .3, 1) ) t += d; d = 9 * frameMul MOVIE.add ( ColorContacts (t, [p300,src1,src2,er] ) ) MOVIE.add ( XfInterp (t, t+d, p300, er.mod.openState.xform, p300.COM, p300e.mod.openState.xform, p300e.COM) ) MOVIE.add ( XfInterp (t, t+d, src1, src1.mod.openState.xform, src1.COM, src1e.mod.openState.xform, src1e.COM) ) MOVIE.add ( XfInterp (t, t+d, src2, src2.mod.openState.xform, src2.COM, src2e.mod.openState.xform, src2e.COM) ) #MOVIE.add ( XfInterp (t+d/2, t+d, src2, src2e.mod.openState.xform, src2e.COM, src2e2.mod.openState.xform, src2e2.COM) ) MOVIE.add ( XfInterp (t, t+d, er, er.mod.openState.xform, er.COM, ere.mod.openState.xform, ere.COM) ) t += d; d = 3 * frameMul * frameMul MOVIE.add ( Rotate2 (t, t+d, p300, p300.COM, [0,1,0], 360.0) ) MOVIE.add ( Rotate2 (t, t+d, src1, src1.COM, [0,1,0], 360.0) ) MOVIE.add ( Rotate2 (t, t+d, src2, src2.COM, [0,1,0], 360.0) ) MOVIE.add ( Rotate2 (t, t+d, er, er.COM, [0,1,0], 360.0) ) t += d; d = 9 * frameMul MOVIE.add ( VaryAlpha ( t, t+d/3, p300, 1, 0) ) MOVIE.add ( VaryAlpha ( t, t+d/3, er, 1, 0) ) MOVIE.add ( VaryAlpha ( t+2*d/3, t+d, src2, 1, .6) ) MOVIE.add ( Hide (t+d/3, [p300,er] ) ) MOVIE.add ( XfInterpM2 (t, t+d, src1, src1, src1_2, []) ) MOVIE.add ( XfInterpM2 (t, t+d, src2, src2, src2_2, []) ) t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [src1,src2], src1.comv, [0,1,0], 360.0) ) t += d; d = 9 * frameMul MOVIE.add ( VaryAlpha ( t+2*d/3, t+d, p300, 0, 1) ) MOVIE.add ( VaryAlpha ( t+2*d/3, t+d, er, 0, 1) ) MOVIE.add ( VaryAlpha ( t+2*d/3, t+d, src2, .6, 1) ) MOVIE.add ( Show (t+2*d/3, [p300,er] ) ) MOVIE.add ( XfInterpM2 (t, t+d, src1, src1, src1e, []) ) MOVIE.add ( XfInterpM2 (t, t+d, src2, src2, src2e, []) ) t += d; d = 9 * frameMul MOVIE.add ( XfInterp (t, t+d, p300, p300e.mod.openState.xform, p300e.COM, p300.mod.openState.xform, p300.COM) ) MOVIE.add ( XfInterp (t, t+d, src1, src1e.mod.openState.xform, src1e.COM, src1.mod.openState.xform, src1.COM) ) MOVIE.add ( XfInterp (t, t+d, src2, src2e.mod.openState.xform, src2e.COM, src2.mod.openState.xform, src2.COM) ) MOVIE.add ( XfInterp (t, t+d, er, ere.mod.openState.xform, ere.COM, er.mod.openState.xform, er.COM) ) #t += d; d = 5 #MOVIE.add ( RotateM (t, t+d, [er,mol3erd,mol1hcq,ax2f,ax2fa,src1_top,src2_top,src1,src2], er.comv, [1,0,0], -90.0) ) #MOVIE.make () #return t += d; d = 15 * frameMul MOVIE.add ( Hide (t, [cx] ) ) MOVIE.add ( Show (t, [er,mol3erd,mol1hcq] ) ) MOVIE.add ( VaryAlpha ( t, t+d, p300, 1, 0) ) MOVIE.add ( VaryAlpha ( t, t+d, src1, 1, 0) ) MOVIE.add ( VaryAlpha ( t, t+d, src2, 1, 0) ) MOVIE.add ( VaryAlpha ( t, t+d, er, .8, .3) ) MOVIE.add ( Hide (t+d, [p300,src1,src2] ) ) t += d; d = 15 * frameMul MOVIE.add ( Show (t, [ax2f,ax2fa] ) ) MOVIE.add ( RotateM (t, t+d, [mol3erd,er,mol1hcq,ax2f,ax2fa], mol3erd.comv, [0,1,0], 360.0) ) t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [mol3erd,er,mol1hcq,ax2f,ax2fa,src1_top,src2_top,er_top], mol3erd.comv, [1,0,0], 90.0) ) t += d; d = 15 * frameMul MOVIE.add ( Show (t, [src1] ) ) MOVIE.add ( VaryAlpha ( t, t+d, src1, 0, 1) ) MOVIE.add ( XfInterpM2 (t, t+d, src1, src1o, src1_top, []) ) t += d; d = 15 * frameMul MOVIE.add ( Show (t, [src2] ) ) MOVIE.add ( VaryAlpha ( t, t+d, src2, 0, 1) ) MOVIE.add ( XfInterpM2 (t, t+d, src2, src2o, src2_top, []) ) #MOVIE.add ( XfInterp (t, t+d, er, src1.mod.openState.xform, src1.COM, src1_top.mod.openState.xform, src1_top.COM) ) #MOVIE.add ( XfInterp (t, t+d, er, src2.mod.openState.xform, src2.COM, src2_top.mod.openState.xform, src2_top.COM) ) #MOVIE.add ( RotateM (t, t+d, [er,mol3erd,mol1hcq,ax2f,ax2fa,src1,src2], comv, [1,0,0], -90.0) ) t += d; d = 9 * frameMul MOVIE.add ( Show (t, [src1_top,src2_top,er_top] ) ) #MOVIE.add ( RotateM (t, t+d, [er,mol3erd,mol1hcq,ax2f,ax2fa,src1,src2], er.comv, [0,0,1], -180.0) ) MOVIE.add ( RotateM (t, t+d, [mol3erd,er,mol1hcq,ax2f,ax2fa,src1,src2], mol3erd.comv, [0,0,1], -180.0) ) t += d; d = 6 * frameMul t += d; d = 9 * frameMul #MOVIE.add ( RotateM (t, t+d, [er,mol3erd,mol1hcq,ax2f,ax2fa,src1,src2], er.comv, [0,0,1], -180.0) ) MOVIE.add ( RotateM (t, t+d, [mol3erd,er,mol1hcq,ax2f,ax2fa,src1,src2], mol3erd.comv, [0,0,1], -180.0) ) MOVIE.add ( Hide (t+d, [src1_top,src2_top,ax2f,ax2fa,er_top] ) ) t += d; d = 9 * frameMul MOVIE.add ( RotateM (t, t+d, [mol3erd,er,mol1hcq,ax2f,ax2fa,src1_top,src2_top,src1,src2,er_top], mol3erd.comv, [1,0,0], -90.0) ) t += d; d = 15 * frameMul MOVIE.add ( Show (t, [p300] ) ) MOVIE.add ( VaryAlpha ( t, t+d, p300, 0, 1) ) MOVIE.add ( XfInterpM2 (t, t+d, p300, p300o, p300, []) ) t += d; d = 9 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, cx, 0, 1) ) MOVIE.make () def P22_1 ( self ) : self.ClearFrames () self.GetAllAMods() print "Visible: " for om in self.visOms : print " - ", om.mod.name portalMap = self.oms["s1a_portalf_nopilot_2.mrc"] portalMapA = self.oms["s1a_portalf_nopilot_2a.mrc"] portalMapB = self.oms["s1a_portalf_nopilot_2b.mrc"] portalMapC = self.oms["s1a_portalf_nopilot_2c.mrc"] portalMapD = self.oms["s1a_portalf_nopilot_2d.mrc"] procapsid = self.oms["s1f.mrc"] portal = self.oms["3lj5_x6ff.pdb"] sca = self.oms["2xyy_f2e_sca.pdb"] sprots = [] if 0 : sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__12.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__14.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__13.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__9.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__11.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__10.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__6.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__8.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__7.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__3.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__5.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__4.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__0.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__2.pdb"] ) sprots.append ( self.oms["2xyy_f2e_all_ring_nosca__1.pdb"] ) else : sprots.append ( self.oms["2xyy_f2e_f13.pdb"] ) sprots.append ( self.oms["2xyy_f2e_f14.pdb"] ) sprots.append ( self.oms["2xyy_f2e_f15.pdb"] ) sprots.append ( self.oms["2xyy_f2e_f16.pdb"] ) sprots.append ( self.oms["2xyy_f2e_f18.pdb"] ) for amod in [portalMap, portalMapA, portalMapB, portalMapC, portalMapD, procapsid] : amod.FromMap () for amod in [sca, portal] + sprots : amod.FromMol () MOVIE = Movie ( self, "P22_procapsid" ) #print " - ", anchor.V[2,0], anchor.V[2,1], anchor.V[2,2] ax = chimera.Vector ( 0, 0, 1 ) #ax = chimera.Vector ( -cx.V[2,0], -cx.V[2,1], -cx.V[2,2] ) ax.normalize() frameMul = 10 MOVIE.add ( Show (0, [portalMap,portal,sca]+sprots ) ) for som in [portalMap,portal]+sprots : MOVIE.add ( VaryAlpha ( 0, 0, som, 1, 1) ) MOVIE.add ( SetXf (0, [portalMap, portal, sca, procapsid]+sprots, portalMapA ) ) t = 0; d = 90 MOVIE.add ( Show (t, [procapsid] ) ) MOVIE.add ( Scale (t, t+d, 1.005 ) ) #t += d; d = 9 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, procapsid, 1, 0) ) MOVIE.add ( Hide (t+d, [procapsid] ) ) MOVIE.add ( VaryAlpha ( t+d, t+d, procapsid, 1, 1) ) t += 9 * frameMul t += d; d = 3 * frameMul for som in sprots [ 0 : 4 ] : #MOVIE.add ( VaryAlpha ( t, t+d, som, 1, 0) ) MOVIE.add ( Hide (t, [som] ) ) t += d; d = 9 * frameMul MOVIE.add ( VaryAlpha ( t, t+d, portalMap, 1, 0.6) ) t += d; d = 9 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, portalMap, portalMapA, portalMapB, [portal,sca,procapsid]+sprots) ) t += d; d = 90 MOVIE.add ( XfInterpM2 (t, t+d, portalMap, portalMapB, portalMapC, [portal,sca,procapsid]+sprots) ) MOVIE.add ( Scale (t, t+d, 1.007 ) ) t += 90 t += d; d = 90 MOVIE.add ( XfInterpM2 (t, t+d, portalMap, portalMapC, portalMapD, [portal,sca,procapsid]+sprots) ) MOVIE.add ( Scale (t, t+d, 1.001 ) ) #t += d; d = 9 * frameMul #MOVIE.add ( RotateM (t, t+d, [portalMap, portal,sca]+sprots, portalMap.comv, [0,1,0], 320.0) ) #t += d; d = 9 * frameMul #MOVIE.add ( XfInterpM2 (t, t+d, portalMap, portalMapC, portalMapB, [portal,sca]+sprots) ) #MOVIE.add ( SetXf (t+d, [portalMap,portal,sca,procapsid]+sprots, portalMapA) ) MOVIE.make () def P22_2 ( self ) : self.ClearFrames () self.GetAllAMods() dmap = self.oms["s2bf_c12m2_portal3z_gp1_1ex.mrc"].FromMap () mod = self.oms["c1_p.pdb"].FromMol () MOVIE = Movie ( self, "p22_promod_rot" ) t = 0; d = 0; t += d; d = 600 MOVIE.add ( Show (t, [dmap] ) ) MOVIE.add ( RotateMove (t, t+d, [dmap, mod], dmap.comv, [0,1,0], 360.0, [0,0,0], itype="linear" ) ) MOVIE.make () def P22_3 ( self ) : self.ClearFrames () self.GetAllAMods() dmap = self.oms["s2.mrc"].FromMap () dna = self.oms["s2_dna_all.mrc"].FromMap () dna_in = self.oms["s2_dna_inportal.mrc"].FromMap () plug = self.oms["s2_plug.mrc"].FromMap () shell = self.oms["shell.mrc"].FromMap () portal = self.oms["portal.mrc"].FromMap () tail = self.oms["_tail_g1.mrc"].FromMap () tube = self.oms["_tail_unk.mrc"].FromMap () needle = self.oms["_needle0.mrc"].FromMap () hub = self.oms["hub.mrc"].FromMap () tail_tri = self.oms["tail_tri.mrc"].FromMap () tail_tri_mod = self.oms["tail_tri.pdb"].FromMol () tail_1 = self.oms["tail_1.mrc"].FromMap () tail_1_mod = self.oms["tail_1.pdb"].FromMol () #shell_1 = self.oms["shell_3le.mrc"].FromMap () #shell_1_mod = self.oms["shell_1.pdb"].FromMol () #portal_1 = self.oms["portal_1.mrc"].FromMap () #portal_1_mod = self.oms["portal_1.pdb"].FromMol () MOVIE = Movie ( self, "P22_2" ) all1 = [shell, portal, tail, needle, tube, hub, dna, dna_in, plug] tl3 = [tail_tri, tail_tri_mod] tl = [tail_1, tail_1_mod] #sl = [shell_1, shell_1_mod] #pl = [portal_1, portal_1_mod] asus = [] asus.append ( self.oms["ASU_1.mrc" ].FromMap () ) asus.append ( self.oms["ASU_3.mrc" ].FromMap () ) asus.append ( self.oms["ASU_2.mrc" ].FromMap () ) asus.append ( self.oms["ASU_4.mrc" ].FromMap () ) asus.append ( self.oms["ASU_5.mrc" ].FromMap () ) cprots = [] cprots.append ( self.oms["asu1e_1.mrc" ].FromMap () ) cprots.append ( self.oms["asu1e_2.mrc" ].FromMap () ) cprots.append ( self.oms["asu1e_3.mrc" ].FromMap () ) cprots.append ( self.oms["asu1e_4.mrc" ].FromMap () ) cprots.append ( self.oms["asu1e_5.mrc" ].FromMap () ) cprots.append ( self.oms["asu1e_6.mrc" ].FromMap () ) cprot_mod = self.oms["asu1_1.pdb"].FromMol () hubs = [] for i in range ( 1, 13 ) : #hubs.append ( self.oms["hub_%de.mrc" % i ].FromMap () ) hubs.append ( self.oms["s4c12_crop_hub_%de.mrc" % i ].FromMap () ) hub_1 = hubs[0] hub_1_mod = self.oms["hub_1.pdb"].FromMol () #hl = [hub_1, hub_1_mod] portals = [] for i in range ( 1, 13 ) : #portals.append ( self.oms["portal_%d.mrc" % i ].FromMap () ) portals.append ( self.oms["s4_crop_portal_%d.mrc" % i ].FromMap () ) portal_mod = self.oms["portal_1.pdb"].FromMol () A = [dmap,dna,cprot_mod,portal_mod,hub_1_mod]+all1+tl3+tl+hubs+asus+cprots+portals frameMul = 5 t = 0; d = 0; MOVIE.add ( Hide (t, tl3+tl+hubs+all1+asus+cprots+portals+[cprot_mod,hub_1_mod,portal_mod] ) ) MOVIE.add ( SetAlpha ( t, [dmap, shell, tail_tri, tail_1, hub, portal] + hubs + asus + cprots + portals, 1.0 ) ) MOVIE.add ( SetThr ( t, [tail], .1 ) ) MOVIE.add ( SetThr ( t, [tube], .1 ) ) MOVIE.add ( SetThr ( t, [needle], .05 ) ) MOVIE.add ( SetThr ( t, [hub], .3 ) ) ctr = numpy.array ( shell.comp_wc ) * -1.0 C = [ctr[0], ctr[1], ctr[2]] if 1 : #frameMul = 1 MOVIE.addKey ( t, "start - entire map - rotate" ) v = chimera.Vector ( 0, 1, 0 ); v.normalize() t += d; d = 10*frameMul MOVIE.add ( Show (t, [dmap] ) ) MOVIE.add ( RotateMove (t, t+d, A, dmap.comv, [v[0],v[1],v[2]], 180.0, [0,0,0], itype="linear" ) ) MOVIE.addKey ( t, "start - entire map" ) v = chimera.Vector ( 0, 1, 0 ); v.normalize() t += d; d = 7*frameMul MOVIE.add ( Show (t, [dmap] ) ) #MOVIE.add ( RotateMove (t, t+d, A, dmap.comv, [v[0],v[1],v[2]], 180.0, [0,0,0], itype="linear" ) ) #MOVIE.add ( VaryThr ( t, t+d, dmap, .04, .14) ) #MOVIE.add ( VaryThr ( t+d/2, t+d, dmap, .14, .04) ) MOVIE.add ( Clip ( t, t+d, -700) ) #t += d; d = 2*frameMul MOVIE.addKey ( t+d, "all map - cut - large segments" ) t += d; d = 3*frameMul MOVIE.add ( Show (t, all1 ) ) MOVIE.add ( Hide (t, [dmap]) ) MOVIE.add ( SetThr ( t, dna, .2 ) ) MOVIE.add ( SetThr ( t, portal, .2 ) ) MOVIE.add ( SetThr ( t, tail, .1 ) ) MOVIE.add ( SetThr ( t, hub, .2 ) ) MOVIE.add ( SetThr ( t, needle, .05 ) ) MOVIE.add ( SetThr ( t, tube, .1 ) ) #MOVIE.add ( RotateMove (t, t+d, A, dmap.comv, [0,1,0], 180.0, [0,0,0], itype="linear" ) ) #MOVIE.add ( VaryThr ( t, t+d, shell, .6, .2) ) #MOVIE.add ( VaryThr ( t, t+d, hub, .5, .3) ) #MOVIE.add ( VaryThr ( t, t+d, portal, .5, .2) ) #MOVIE.add ( VaryThr ( t, t+d, tail, .5, .15) ) #MOVIE.add ( VaryAlpha ( t, t+1, [shell], 1, .2) ) #MOVIE.add ( SetAlpha ( t, [shell], 0.2) ) t += d; d = 7*frameMul MOVIE.add ( Hide (t, dmap ) ) MOVIE.add ( Clip ( t, t+d, 700) ) MOVIE.add ( ClipOff ( t+d ) ) #frameMul = 5 t += d; d = 3*frameMul MOVIE.add ( VaryAlpha ( t, t+d, [shell], 1, .2) ) MOVIE.add ( VaryThr ( t, t+d, [dna], .2, .4) ) MOVIE.add ( Hide ( t, [dna_in, plug] ) ) # pause t += d; d = 2*frameMul # ------------------- tail ------------------------------- # zoom in on tail t += d; d = 3*frameMul #MOVIE.add ( VaryAlpha ( t, t+d, shell, 1, 0.3) ) MOVIE.add ( RotateMove (t, t+d, A, shell.comv, [1,0,0], 0.0, [0,240,800], itype="linear" ) ) MOVIE.addKey ( t+d, "tail - rotate" ) # rotate around tail and needle #v = chimera.Vector ( 0, 1, 1 ); v.normalize() t += d; d = 2*frameMul MOVIE.add ( RotateMove (t, t+d, A, tail.comv, [1,0,0], -90.0, [0,0,0], itype="linear" ) ) t += d; d = 2*frameMul MOVIE.addKey ( t+d, "tail - bottom view" ) t += d; d = 2*frameMul MOVIE.add ( RotateMove (t, t+d, A, tail.comv, [1,0,0], 90.0, [0,0,0], itype="linear" ) ) MOVIE.addKey ( t+d, "tail - 6 trimers to 1 trimer" ) # show tail trimer, hide tail and needle t += d; d = 1*frameMul MOVIE.add ( Show (t, [tail_tri] ) ) MOVIE.add ( VaryThr ( t, t+d, tail, .1, .6) ) MOVIE.add ( VaryThr ( t, t+d, needle, .05, .6) ) MOVIE.add ( VaryThr ( t, t+d, tube, .1, .6) ) MOVIE.add ( Hide (t+d, [tail,needle,tube] ) ) # make tail trimer transparent t += d; d = 1*frameMul MOVIE.add ( Show (t, [tail_tri_mod] ) ) #MOVIE.add ( RotateMove (t, t+d, A, tail_tri.comv, [0,1,0], -360.0, [0,0,0], itype="linear" ) ) MOVIE.add ( VaryAlpha ( t, t+d, tail_tri, 1, 0.4) ) MOVIE.addKey ( t+d, "tail - trimer model" ) # rotate trimer and vary thr t += d; d = 10*frameMul MOVIE.add ( RotateMove (t, t+d, A, tail_tri.comv, [0,1,0], 360.0, [0,0,0], itype="linear" ) ) MOVIE.add ( VaryAlpha ( t, t+d/4, tail_tri, 1, 0.6) ) MOVIE.add ( VaryThr ( t, t+d/4, tail_tri, .1, .6) ) MOVIE.add ( VaryThr ( t+d/4, t+d/2, tail_tri, .6, .1) ) MOVIE.add ( VaryThr ( t+d/2, t+d*3/4, tail_tri, .1, .6) ) MOVIE.add ( VaryThr ( t+d*3/4, t+d, tail_tri, .6, .1) ) # make tail trimer transparent, thr in tail protein t += d; d = 2*frameMul MOVIE.add ( Hide (t, [tail_tri_mod] ) ) MOVIE.add ( Show (t, [tail_1, tail_1_mod] ) ) MOVIE.add ( VaryAlpha ( t, t+d, tail_tri, 0.4, 0) ) MOVIE.add ( VaryThr ( t, t+d, tail_1, .6, .1) ) MOVIE.add ( VaryAlpha ( t, t+d, tail_1, 1, 1) ) MOVIE.add ( Hide (t+d, [tail_tri] ) ) t += d; d = 2*frameMul MOVIE.addKey ( t+d, "tail - single protein in trimer" ) # rotate trimer and vary thr t += d; d = 10*frameMul MOVIE.add ( RotateMove (t, t+d, A, tail_1.comv, [0,1,0], 360.0, [0,0,0], itype="linear" ) ) MOVIE.add ( VaryAlpha ( t, t+d/4, tail_1, 1, 0.6) ) MOVIE.add ( VaryThr ( t, t+d/4, tail_1, .1, .6) ) MOVIE.add ( VaryThr ( t+d/4, t+d/2, tail_1, .6, .1) ) MOVIE.add ( VaryThr ( t+d/2, t+d*3/4, tail_1, .1, .6) ) MOVIE.add ( VaryThr ( t+d*3/4, t+d, tail_1, .6, .1) ) # rotate around hub - to bottom view t += d; d = 1*frameMul MOVIE.add ( Hide (t, tail_1_mod ) ) MOVIE.add ( VaryAlpha ( t, t+d, tail_1, 1, 0) ) MOVIE.add ( RotateMove (t, t+d, A, hub.comv, [1,0,0], -90.0, [0,0,0], itype="linear" ) ) MOVIE.add ( Hide (t+d, tail_1 ) ) # -------------------- hub proteins -------------------------------- MOVIE.addKey ( t+d, "hub - 12 proteins" ) # show hub proteins one by one t += d; d = frameMul/5 MOVIE.add ( VaryAlpha ( t, t+d, [hub], 1, .2) ) MOVIE.add ( Show (t, hubs[0] ) ) MOVIE.add ( VaryThr ( t, t+d, hubs[0], 0.5, 0.1) ) for i in range ( 1, len(hubs) ) : t += d; d = frameMul/5 MOVIE.add ( Show (t, hubs[i] ) ) MOVIE.add ( VaryThr ( t, t+d, hubs[i], 0.5, 0.1) ) if i == len(hubs)-1 : MOVIE.add ( VaryAlpha ( t, t+d, [hub], .2, 0) ) MOVIE.add ( Hide (t+d, hub ) ) #MOVIE.add ( Hide (t+d, hub ) ) # pause for a sec t += d; d = 2*frameMul # rotate around hub, show and zoom in on one hub protein t += d; d = 3*frameMul MOVIE.add ( RotateMove (t, t+d, A, hub.comv, [1,0,0], 90.0, [0,0,500], itype="linear" ) ) # fade out 11 hub proteins, shell, portal, dna t += d; d = 3*frameMul #MOVIE.add ( SetAlpha ( t, [hub_1], 1) ) MOVIE.add ( VaryThr ( t, t+d, portal, .2, .5) ) MOVIE.add ( VaryThr ( t, t+d, dna, .4, 1.0) ) MOVIE.add ( VaryAlpha ( t, t+d, [shell], 0.2, 0) ) MOVIE.add ( Hide (t+d, [shell,portal,dna] ) ) t += d; d = 3*frameMul MOVIE.add ( VaryAlpha ( t, t+d, hubs[1:], 1, 0) ) MOVIE.add ( Hide (t+d, hubs[1:] ) ) MOVIE.addKey ( t+d, "hub - 1 hub protein" ) # rotate around hub 1 protein t += d; d = 10*frameMul MOVIE.add ( Show (t, [hub_1_mod] ) ) MOVIE.add ( RotateM (t, t+d, A, hub_1.comv, [0,1,0], 360.0, itype="linear" ) ) MOVIE.add ( VaryAlpha ( t, t+d/3, hub_1, 1, .6) ) MOVIE.add ( VaryThr ( t, t+d/4, hub_1, .1, .5) ) MOVIE.add ( VaryThr ( t+d/4, t+d/2, hub_1, .5, .1) ) MOVIE.add ( VaryThr ( t+d/2, t+d*3/4, hub_1, .1, .5) ) MOVIE.add ( VaryThr ( t+d*3/4, t+d, hub_1, .5, .1) ) # pause for a sec t += d; d = 2*frameMul # rotate around hub back to bottom view t += d; d = 3*frameMul MOVIE.add ( Show (t, [portal, shell] ) ) #MOVIE.add ( VaryAlpha ( t, t+d, [portal], 0, 1) ) MOVIE.add ( VaryThr ( t, t+d, portal, .5, .2) ) #MOVIE.add ( VaryThr ( t, t+d, dna, 1, .4) ) MOVIE.add ( VaryAlpha ( t, t+d, [shell], 0, 0.3) ) MOVIE.add ( SetAlpha ( t, [hub_1,portal], 1) ) MOVIE.add ( RotateMove (t, t+d, A, hub.comv, [1,0,0], -90.0, [0,0,-500], itype="linear" ) ) MOVIE.add ( Hide (t+d, [hub_1, hub_1_mod] ) ) #frameMul = 20 # -------------------- ASUs ------------------------------------ # show ASUs t += d; d = 1*frameMul MOVIE.add ( Show (t, [ asus[0] ] ) ) #MOVIE.add ( SetThr ( t, asus, .2 ) ) MOVIE.add ( VaryThr ( t, t+d, [ asus[0] ], .8, .2) ) MOVIE.add ( VaryAlpha ( t, t+d, [shell], 0.5, 0.1) ) for i in range ( 1, 5 ) : t += d; d = 1*frameMul MOVIE.add ( Show (t, [ asus[i] ] ) ) MOVIE.add ( VaryThr ( t, t+d, [ asus[i] ], .8, .2) ) t += d; d = 2*frameMul MOVIE.addKey ( t+d, "5 ASUs around portal" ) # hide ASUs, show proteins in ASU 1 v = chimera.Vector ( 1, 0, -1.5 ); v.normalize() t += d; d = 2*frameMul MOVIE.add ( RotateMove (t, t+d, A, hub.comv, [v[0],v[1],v[2]], 40.0, [0,-70,300], itype="linear" ) ) MOVIE.add ( Hide (t, shell ) ) MOVIE.add ( VaryAlpha ( t, t+d, asus[0], 1, 0.3) ) MOVIE.add ( VaryAlpha ( t, t+d, asus[1:], 1, 0) ) MOVIE.add ( Hide (t+d, asus[1:] ) ) MOVIE.addKey ( t+d, "ASU - 6 coat proteins" ) for i in range ( 0, 6 ) : t += d; d = frameMul/5 MOVIE.add ( Show (t, [ cprots[i] ] ) ) MOVIE.add ( VaryThr ( t, t+d, [ cprots[i] ], .6, .2) ) t += d; d = 2*frameMul # make coat protein surface transparent, show model, hide other coat proteins in ASU, hide portal t += d; d = 1*frameMul MOVIE.add ( Hide (t, asus[0] ) ) MOVIE.add ( Show (t, [ cprot_mod ] ) ) MOVIE.add ( VaryThr ( t, t+d, [ portal ], .2, 1) ) MOVIE.add ( Hide (t+d, portal ) ) MOVIE.add ( VaryAlpha ( t, t+d, [ cprots[0] ], 1.0, 0.6) ) MOVIE.add ( VaryAlpha ( t, t+d, cprots[1:], 1, 0) ) MOVIE.add ( Hide (t+d, cprots[1:] ) ) MOVIE.addKey ( t+d, "1 coat protein" ) # rotate coat model, vary thr density t += d; d = 10*frameMul MOVIE.add ( Hide (t, asus[0] ) ) MOVIE.add ( RotateMove (t, t+d, A, cprots[0].comv, [1,0,0], 360.0, [0,0,0], itype="linear" ) ) MOVIE.add ( VaryThr ( t, t+d/4, [ cprots[0] ], .2, .6) ) MOVIE.add ( VaryThr ( t+d/4, t+d/2, [ cprots[0] ], .6, .2) ) MOVIE.add ( VaryThr ( t+d/2, t+d*3/4, [ cprots[0] ], .2, .6) ) MOVIE.add ( VaryThr ( t+d*3/4, t+d, [ cprots[0] ], .6, .2) ) t += d; d = 2*frameMul # rotate back to bottom view - show portal t += d; d = 1*frameMul MOVIE.add ( RotateMove (t, t+d, A, hub.comv, [v[0],v[1],v[2]], -40.0, [0,70,-300], itype="linear" ) ) MOVIE.add ( Show (t, portal ) ) MOVIE.add ( VaryThr ( t, t+d, [ portal ], 1, .2) ) MOVIE.add ( Hide (t+d, [cprots[0],cprot_mod] ) ) # ------------- portal protein(s) -------------------------------------- # show portal proteins one by one t += d; d = frameMul/5 MOVIE.add ( VaryAlpha ( t, t+d, [portal], 1, .2) ) MOVIE.add ( Show (t, portals[0] ) ) MOVIE.add ( VaryThr ( t, t+d, portals[0], 0.5, 0.22) ) for i in range ( 1, len(portals) ) : t += d; d = frameMul/5 MOVIE.add ( Show (t, portals[i] ) ) MOVIE.add ( VaryThr ( t, t+d, portals[i], 0.5, 0.2) ) if i == len(portals)-1 : MOVIE.add ( VaryAlpha ( t, t+d, [portal], .2, 0) ) MOVIE.add ( Hide (t+d, portal ) ) MOVIE.addKey ( t+d, "12 portal proteins" ) # pause for a sec t += d; d = 2*frameMul # rotate to side view t += d; d = 3*frameMul MOVIE.add ( RotateMove (t, t+d, A, portal.comv, [1,0,0], 90.0, [0,5,400], itype="linear" ) ) # hide 11 portal proteins, show only one t += d; d = 3*frameMul MOVIE.add ( Show (t, [portal_mod] ) ) MOVIE.add ( VaryAlpha ( t, t+d, portals[0], 1, 0.6) ) MOVIE.add ( VaryThr ( t, t+d, portals[1:], 0.22, 0.5) ) MOVIE.add ( Hide (t+d, portals[1:] ) ) # pause for a sec t += d; d = 1*frameMul MOVIE.addKey ( t+d, "portal protein" ) # rotate around portal 1 protein t += d; d = 10*frameMul MOVIE.add ( RotateM (t, t+d, A, portals[0].comv, [0,1,0], 360.0, itype="linear" ) ) MOVIE.add ( VaryThr ( t, t+d/4, portals[0], .22, .5) ) MOVIE.add ( VaryThr ( t+d/4, t+d/2, portals[0], .5, .22) ) MOVIE.add ( VaryThr ( t+d/2, t+d*3/4, portals[0], .22, .5) ) MOVIE.add ( VaryThr ( t+d*3/4, t+d, portals[0], .5, .22) ) # pause for a sec t += d; d = 1*frameMul # show all portal again, and dna t += d; d = 3*frameMul MOVIE.add ( Show (t, [portal,dna] ) ) MOVIE.add ( VaryAlpha ( t, t+d, portals[0], 0.6, 0) ) MOVIE.add ( VaryThr ( t, t+d, portal, .5, .2) ) MOVIE.add ( VaryThr ( t, t+d, dna, 1, .4) ) MOVIE.add ( VaryAlpha ( t, t+d, portal, 1, 1) ) MOVIE.add ( Hide (t+d, [portal_mod] ) ) MOVIE.add ( Hide (t+d, portals[0] ) ) # pause for a sec t += d; d = 1*frameMul # rotate around hub back to bottom view t += d; d = 3*frameMul MOVIE.add ( RotateMove (t, t+d, A, portal.comv, [1,0,0], -90.0, [0,-5,-400], itype="linear" ) ) # pause for a sec t += d; d = 1*frameMul # ---------------- rotate back to side view - show tail, hub, shell, needle -------------------- t += d; d = 3*frameMul MOVIE.add ( RotateMove (t, t+d, A, hub.comv, [1,0,0], 90.0, [0,0,0], itype="linear" ) ) MOVIE.add ( Show (t, [tail,tube,needle,shell,hub] ) ) MOVIE.add ( VaryThr ( t, t+d, tail, .6, .1) ) MOVIE.add ( VaryThr ( t, t+d, needle, .6, .05) ) MOVIE.add ( VaryThr ( t, t+d, hub, .6, .3) ) MOVIE.add ( VaryThr ( t, t+d, shell, .7, .2) ) MOVIE.add ( VaryThr ( t, t+d, tube, .6, .1) ) MOVIE.add ( SetAlpha ( t, portal, 1.0 ) ) MOVIE.add ( SetAlpha ( t, shell, 0.2 ) ) MOVIE.add ( SetAlpha ( t, hub, 1.0 ) ) # zoom out to whole virus t += d; d = 3*frameMul MOVIE.add ( RotateMove (t, t+d, A, shell.comv, [1,0,0], 0.0, [0,-240,-800], itype="linear" ) ) MOVIE.make () def P22_4 ( self ) : self.ClearFrames () self.GetAllAMods() dmap = self.oms["s2.mrc"].FromMap () shell = self.oms["s4_shell.mrc"].FromMap () portals = [] for i in range ( 1, 13 ) : portals.append ( self.oms["s4c12_crop_portal_%02d.mrc" % i ].FromMap () ) pmods = [] for i in range ( 1, 13 ) : pmods.append ( self.oms["_portal_p%d.pdb" % i ].FromMol () ) cmods = [] for i in range ( 1, 6 ) : cmods.append ( self.oms["gp5_hex_f%d.pdb" % i ].FromMol () ) coat_A = [] for i in range ( 1, 6 ) : coat_A.append ( self.oms["gp5_A%d.pdb" % i ].FromMol () ) coat_B = [] for i in range ( 1, 6 ) : coat_B.append ( self.oms["gp5_B%d.pdb" % i ].FromMol () ) A = [dmap,shell]+portals+pmods+cmods+coat_A+coat_B MOVIE = Movie ( self, "P22_4" ) frameMul = 30 t = 0; d = 0; MOVIE.add ( Hide (t, A ) ) #MOVIE.add ( Show (t, [dmap] ) ) MOVIE.add ( SetAlpha ( t, [dmap]+portals, 1.0 ) ) MOVIE.add ( SetThr ( t, portals, 0.00672 ) ) ctr = numpy.array ( shell.comp_wc ) * -1.0 C = [ctr[0], ctr[1], ctr[2]] MOVIE.addKey ( t, "start - entire map - rotate" ) t += d; d = 20*frameMul MOVIE.add ( Show (t, [dmap] ) ) MOVIE.add ( RotateMove (t, t+d, A, dmap.comv, [0,1,0], 360.0, [0,0,0], itype="linear" ) ) t += d; d = 5*frameMul MOVIE.add ( VaryAlpha ( t, t+d, dmap, 1, 0) ) MOVIE.add ( Hide (t+d, dmap ) ) MOVIE.add ( Show (t, portals ) ) t += d; d = 6*frameMul MOVIE.add ( RotateMove (t, t+d, A, dmap.comv, [1,0,0], -90.0, [0,-50,1000], itype="linear" ) ) MOVIE.add ( Show (t, shell ) ) MOVIE.add ( VaryAlpha ( t, t+d, shell, 0, .4) ) t += d; d = 2*frameMul t += d; d = 2*frameMul MOVIE.add ( Show (t, cmods[0] ) ) t += d; d = 2*frameMul MOVIE.add ( Show (t, cmods[4] ) ) t += d; d = 2*frameMul MOVIE.add ( Show (t, cmods[3] ) ) t += d; d = 2*frameMul MOVIE.add ( Show (t, cmods[2] ) ) t += d; d = 2*frameMul MOVIE.add ( Show (t, cmods[1] ) ) #t += d; d = 3*frameMul #MOVIE.add ( VaryThr ( t, t+d, shell, .3, .7) ) MOVIE.add ( VaryAlpha ( t, t+d, shell, .4, 0) ) MOVIE.add ( Hide (t+d, shell ) ) MOVIE.addKey ( t, "hexons" ) t += d; d = 2*frameMul MOVIE.add ( Show (t, coat_A[0] ) ) MOVIE.add ( Show (t, coat_B[0] ) ) MOVIE.add ( Hide (t, cmods[0] ) ) t += d; d = 2*frameMul MOVIE.add ( Show (t, coat_A[1] ) ) MOVIE.add ( Show (t, coat_B[1] ) ) MOVIE.add ( Hide (t, cmods[4] ) ) t += d; d = 2*frameMul MOVIE.add ( Show (t, coat_A[2] ) ) MOVIE.add ( Show (t, coat_B[2] ) ) MOVIE.add ( Hide (t, cmods[3] ) ) t += d; d = 2*frameMul MOVIE.add ( Show (t, coat_A[3] ) ) MOVIE.add ( Show (t, coat_B[3] ) ) MOVIE.add ( Hide (t, cmods[2] ) ) t += d; d = 2*frameMul MOVIE.add ( Show (t, coat_A[4] ) ) MOVIE.add ( Show (t, coat_B[4] ) ) MOVIE.add ( Hide (t, cmods[1] ) ) t += d; d = 1*frameMul MOVIE.add ( Show (t, pmods ) ) MOVIE.add ( VaryThr ( t, t+d, portals, 0.00672, 0.0336) ) MOVIE.add ( Hide (t+d, portals ) ) t += d; d = 2*frameMul MOVIE.addKey ( t, "portals and coat" ) t += d; d = 4*frameMul MOVIE.add ( Hide (t, [pmods[1],pmods[3],pmods[5],pmods[7],pmods[9],pmods[11]] ) ) MOVIE.addKey ( t, "portals and coat - 1" ) t += d; d = 4*frameMul MOVIE.add ( Show (t, [pmods[1],pmods[3],pmods[5],pmods[7],pmods[9],pmods[11]] ) ) t += d; d = 4*frameMul MOVIE.add ( Hide (t, [pmods[0],pmods[2],pmods[4],pmods[6],pmods[8],pmods[10]] ) ) MOVIE.addKey ( t, "portals and coat - 2" ) t += d; d = 4*frameMul MOVIE.add ( Show (t, [pmods[0],pmods[2],pmods[4],pmods[6],pmods[8],pmods[10]] ) ) t += d; d = 4*frameMul MOVIE.addKey ( t, "portals and coat" ) t += d; d = 10*frameMul MOVIE.add ( Show (t, [dmap] ) ) MOVIE.add ( SetAlpha ( t, [dmap,shell], 1) ) MOVIE.add ( Show (t, portals ) ) MOVIE.add ( SetThr ( t, portals, 0.00672) ) MOVIE.add ( RotateMove (t, t+d, A, dmap.comv, [1,0,0], 90.0, [0,50,-1000], itype="linear" ) ) MOVIE.make () def TolC_0 ( self ) : self.ClearFrames () self.GetAllAMods() dmap = self.oms["7A_coil_coil_1.mrc"].FromMap () m1 = self.oms["Morph - TolC2_AcrA_AcrBZ_chainC_beg0.pdb"].FromMol () #m2 = self.oms["TolC2_AcrA_AcrBZ_chainC_end.pdb"].FromMol () MOVIE = Movie ( self, "TolC_rot_chainC" ) frameMul = 30 t = 0; d = 10*frameMul MOVIE.add ( RotateM (t, t+d, [dmap, m1], dmap.comv, [0,1,0], 360.0, itype="linear" ) ) #t += d; d = 5*frameMul #MOVIE.add ( RotateM (t, t+d, [dmap, m1, m2], dmap.comv, [0,-1,0], 90.0) ) #t += d; d = 5*frameMul #MOVIE.add ( RotateM (t, t+d, [dmap, m1, m2], dmap.comv, [0,1,0], 90.0) ) #t += d; d = 5*frameMul #MOVIE.add ( RotateM (t, t+d, [dmap, m1, m2], dmap.comv, [0,-1,0], 45.0) ) MOVIE.make () def TolC ( self ) : self.ClearFrames () self.GetAllAMods() dmap = self.oms["7Asm.mrc"].FromMap () if 0 : tolc_1 = self.oms["7Am_TolC_1.mrc"].FromMap () tolc_2 = self.oms["7Am_TolC_2.mrc"].FromMap () tolc_3 = self.oms["7Am_TolC_3.mrc"].FromMap () acra_1 = self.oms["7Am_AcrA_1.mrc"].FromMap () acra_2 = self.oms["7Am_AcrA_2.mrc"].FromMap () acra_3 = self.oms["7Am_AcrA_3.mrc"].FromMap () acra_4 = self.oms["7Am_AcrA_4.mrc"].FromMap () acra_5 = self.oms["7Am_AcrA_5.mrc"].FromMap () acra_6 = self.oms["7Am_AcrA_6.mrc"].FromMap () acrb_1 = self.oms["7Am_AcrB_1.mrc"].FromMap () acrb_2 = self.oms["7Am_AcrB_2.mrc"].FromMap () acrb_3 = self.oms["7Am_AcrB_3.mrc"].FromMap () m1 = self.oms["mod4_ff.pdb"].FromMol () mseg = self.oms["mod4_ff_ps.pdb"].FromMol () #m2 = self.oms["TolC2_AcrA_AcrBZ_chainC_end.pdb"].FromMol () if 0 : tolc = [] #[tolc_1, tolc_2, tolc_3] acra = [] #[acra_1, acra_2, acra_3, acra_4, acra_5, acra_6] acrb = [] #[acrb_1, acrb_2, acrb_3] for i in range ( 1, 34 ) : tolc.append ( self.oms["7Am_tolc_%d.mrc" % i ].FromMap () ) for i in range ( 1, 19 ) : acra.append ( self.oms["7Am_acra_%d.mrc" % i ].FromMap () ) for i in range ( 1, 4 ) : acrb.append ( self.oms["7Am_acrb_%d.mrc" % i ].FromMap () ) alls = tolc + acra + acrb if 0 : s_tolc = [] #[tolc_1, tolc_2, tolc_3] s_acra = [] #[acra_1, acra_2, acra_3, acra_4, acra_5, acra_6] s_acrb = [] #[acrb_1, acrb_2, acrb_3] for i in range ( 1, 8 ) : s_tolc.append ( self.oms["7Am_s_tolc_%d.mrc" % i ].FromMap () ) for i in range ( 1, 7 ) : s_acra.append ( self.oms["7Am_s_acra_%d.mrc" % i ].FromMap () ) for i in range ( 1, 13 ) : s_acrb.append ( self.oms["7Am_s_acrb_%d.mrc" % i ].FromMap () ) segs = s_tolc + s_acra + s_acrb segs = [] for i in range ( 1, 66 ) : segs.append ( self.oms["7As_seg_%d.mrc" % i ].FromMap () ) MOVIE = Movie ( self, "TolC_2" ) frameMul = 30 t = 0; d = 0; MOVIE.add ( Hide (t+d, [m1,mseg] + segs ) ) MOVIE.add ( Show (t+d, [dmap] ) ) MOVIE.add ( SetAlpha ( t, [dmap]+segs, 1.0 ) ) #MOVIE.add ( SetThr ( t, cx + ab, .02 ) ) # rotate map, change threshold t += d; d = 7*frameMul MOVIE.add ( RotateMove (t, t+d, [dmap], dmap.comv, [0,1,0], 360.0, [0,0,0], itype="linear" ) ) MOVIE.add ( VaryThr ( t, t+d/2, dmap, 1, 0.3) ) MOVIE.add ( VaryThr ( t+d/2, t+d, dmap, 0.3, 1) ) #show model, rotate, change threshold t += d; d = 7*frameMul MOVIE.add ( Show (t, [m1] ) ) MOVIE.add ( RotateMove (t, t+d, [dmap, m1], dmap.comv, [0,1,0], 360.0, [0,0,0], itype="linear" ) ) MOVIE.add ( VaryThr ( t, t+d/3, dmap, 1, 0.3) ) MOVIE.add ( VaryThr ( t+d/3, t+2*d/3, dmap, 0.3, 1) ) MOVIE.add ( VaryThr ( t+2*d/3, t+d, dmap, 1, 0.3) ) # hide main surf, show seg contours t += d; d = 1*frameMul MOVIE.add ( Hide (t, [m1] ) ) MOVIE.add ( Show (t, segs ) ) MOVIE.add ( VaryAlpha ( t, t+d, dmap, 1, 0) ) MOVIE.add ( Hide (t+d, [dmap,m1] ) ) t += d; d = 1*frameMul MOVIE.add ( Show (t, [mseg] ) ) MOVIE.add ( VaryAlpha ( t, t+d, segs, 1, 0.4) ) # zoom in, move model up and spin t += d; d = 3*frameMul MOVIE.add ( RotateMove (t, t+d, [mseg]+segs, dmap.comv, [0,1,0], 0.0, [0,-150,500], itype="linear" ) ) t += d; d = 38*frameMul MOVIE.add ( RotateMove (t, t+d, [mseg]+segs, dmap.comv, [0,1,0], 1440.0, [0,300,0], itype="linear" ) ) t += d; d = 3*frameMul MOVIE.add ( RotateMove (t, t+d, [mseg]+segs, dmap.comv, [0,1,0], 0.0, [0,-150,-500], itype="linear" ) ) MOVIE.make () return # hide all seg contours, show seg seg contours t += d; d = 3*frameMul MOVIE.add ( Show (t, segs + [mseg] ) ) MOVIE.add ( Hide (t, m1 ) ) MOVIE.add ( VaryAlpha ( t, t+d, alls, 1, 0) ) MOVIE.add ( Hide (t+d, alls ) ) t += d; d = 3*frameMul #MOVIE.add ( Show (t, [m1] ) ) MOVIE.add ( VaryAlpha ( t, t+d, segs, 1, 0.4) ) # zoom in, move model up and spin t += d; d = 10*frameMul MOVIE.add ( RotateMove (t, t+d, [dmap, mseg]+segs, dmap.comv, [0,1,0], 0.0, [0,-150,800], itype="linear" ) ) t += d; d = 60*frameMul MOVIE.add ( RotateMove (t, t+d, [dmap, mseg]+segs, dmap.comv, [0,1,0], 1440.0, [0,300,0], itype="linear" ) ) t += d; d = 10*frameMul MOVIE.add ( RotateMove (t, t+d, [dmap, mseg]+segs, dmap.comv, [0,1,0], 0.0, [0,-150,-800], itype="linear" ) ) MOVIE.make () def TolC1 ( self ) : self.ClearFrames () self.GetAllAMods() dmap = self.oms["7As_tolc.mrc"].FromMap () m1 = self.oms["mod4_ff_tolc.pdb"].FromMol () MOVIE = Movie ( self, "TolC_tolc" ) frameMul = 30 t = 0; d = 0; MOVIE.add ( SetAlpha ( t, [dmap], 0.7 ) ) t += d; d = 10*frameMul MOVIE.add ( Show (t, [dmap, m1] ) ) MOVIE.add ( RotateMove (t, t+d, [dmap, m1], dmap.comv, [0,1,0], 360.0, [0,0,0], itype="linear" ) ) MOVIE.add ( VaryThr ( t, t+d/3, dmap, 0.6, 0.3) ) MOVIE.add ( VaryThr ( t+d/3, t+2*d/3, dmap, 0.3, 1) ) MOVIE.add ( VaryThr ( t+2*d/3, t+d, dmap, 1, 0.6) ) MOVIE.make () def TolC_acra ( self ) : self.ClearFrames () self.GetAllAMods() dmap = self.oms["7As_acra.mrc"].FromMap () m1 = self.oms["mod4_ff_acra.pdb"].FromMol () MOVIE = Movie ( self, "TolC_acra" ) frameMul = 30 t = 0; d = 0; MOVIE.add ( SetAlpha ( t, [dmap], 0.7 ) ) t += d; d = 10*frameMul MOVIE.add ( Show (t, [dmap, m1] ) ) MOVIE.add ( RotateMove (t, t+d, [dmap, m1], dmap.comv, [0,1,0], 360.0, [0,0,0], itype="linear" ) ) MOVIE.add ( VaryThr ( t, t+d/3, dmap, 0.6, 0.3) ) MOVIE.add ( VaryThr ( t+d/3, t+2*d/3, dmap, 0.3, 1) ) MOVIE.add ( VaryThr ( t+2*d/3, t+d, dmap, 1, 0.6) ) #MOVIE.add ( VaryThr ( t, t+d/2, dmap, 1, 0.3) ) #MOVIE.add ( VaryThr ( t+d/2, t+d, dmap, 0.3, 1) ) MOVIE.make () def TolC_acrb ( self ) : self.ClearFrames () self.GetAllAMods() dmap = self.oms["7As_acrb.mrc"].FromMap () m1 = self.oms["mod4_ff_acrbz.pdb"].FromMol () MOVIE = Movie ( self, "TolC_acrb" ) frameMul = 30 t = 0; d = 0; MOVIE.add ( SetAlpha ( t, [dmap], 0.7 ) ) t += d; d = 10*frameMul MOVIE.add ( Show (t, [dmap, m1] ) ) MOVIE.add ( RotateMove (t, t+d, [dmap, m1], dmap.comv, [0,1,0], 360.0, [0,0,0], itype="linear" ) ) MOVIE.add ( VaryThr ( t, t+d/2, dmap, 0.3, 1) ) MOVIE.add ( VaryThr ( t+d/2, t+d, dmap, 1, 0.3) ) MOVIE.make () def ER_comp_cx ( self ) : self.ClearFrames () self.GetAllAMods() if 0 : cx_eman = self.oms["complex_g6.mrc"].FromMap () cx_relion = self.oms["cx-relion-g3.mrc"].FromMap () cx_diff = self.oms["complex_g6--cx-relion-g3.mrc"].FromMap () cx_eman = self.oms["p300-cx.mrc"].FromMap () cx_relion = self.oms["p300f.mrc"].FromMap () cx_diff = self.oms["p300-cx--p300f.mrc"].FromMap () MOVIE = Movie ( self, "ER_comp_p300" ) frameMul = 30 t = 0; d = 10*frameMul MOVIE.add ( RotateM (t, t+d, [cx_eman], cx_eman.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_relion], cx_relion.comv, [0,1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [cx_diff], cx_diff.comv, [0,1,0], 360.0) ) MOVIE.make () def ER_comp_src ( self ) : self.ClearFrames () self.GetAllAMods() if 0 : cx_eman = self.oms["complex_g6.mrc"].FromMap () cx_relion = self.oms["cx-relion-g3.mrc"].FromMap () cx_diff = self.oms["complex_g6--cx-relion-g3.mrc"].FromMap () s1 = self.oms["ER-ccd-relion25A-setsf_SRC3a.mrc"].FromMap () s2 = self.oms["ER-ccd-relion25A-setsf_SRC3b.mrc"].FromMap () s1_ = self.oms["ER-ccd-relion25A-setsf_SRC3a-.mrc"].FromMap () s2_ = self.oms["ER-ccd-relion25A-setsf_SRC3b-.mrc"].FromMap () MOVIE = Movie ( self, "ER_relion_src" ) frameMul = 30 if 0 : MOVIE.add ( XfInterpM2 (t, t+d, s1_, s1_, s1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, s2_, s2_, s2, []) ) t = 0; d = 6*frameMul MOVIE.add ( RotateM (t, t+d, [s1_, s2_], s1_.comv, [0,-1,0], 360.0) ) #MOVIE.add ( RotateM (t, t+d, [s2_], s1_.comv, [0,-1,0], 360.0) ) t += d; d = 6 * frameMul MOVIE.add ( XfInterpM2 (t, t+d, s1_, s1_, s1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, s2_, s2_, s2, []) ) t += d; d = 6*frameMul MOVIE.add ( RotateM (t, t+d, [s1_], s1_.comv, [0,-1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, [s2_], s2_.comv, [0,-1,0], 360.0) ) MOVIE.make () def ER_comp_all ( self ) : self.ClearFrames () self.GetAllAMods() if 0 : cx_eman = self.oms["complex_g6.mrc"].FromMap () cx_relion = self.oms["cx-relion-g3.mrc"].FromMap () cx_diff = self.oms["complex_g6--cx-relion-g3.mrc"].FromMap () eAll0 = self.oms["complex-lp4.mrc"].FromMap () eAll = self.oms["complex-lp4-g5.mrc"].FromMap () eER = self.oms["complex_segments_ER_lp.mrc"].FromMap () eP300 = self.oms["complex_segments_P300_lp.mrc"].FromMap () eSrcA = self.oms["complex_segments_SRC1_lp.mrc"].FromMap () eSrcB = self.oms["complex_segments_SRC2_lp.mrc"].FromMap () rAll0 = self.oms["ER-ccd-relion25A-setsf_0.mrc"].FromMap () rAll = self.oms["ER-ccd-relion25A-setsf_g4.mrc"].FromMap () rER = self.oms["ER-ccd-relion25A-setsf_ER_gp4.mrc"].FromMap () rP300 = self.oms["ER-ccd-relion25A-setsf_P300_gp4.mrc"].FromMap () rSrcA = self.oms["ER-ccd-relion25A-setsf_SRC3a_gp4.mrc"].FromMap () rSrcB = self.oms["ER-ccd-relion25A-setsf_SRC3b_gp4.mrc"].FromMap () ecs = [eER,eP300,eSrcA,eSrcB] rcs = [rER,rP300,rSrcA,rSrcB] MOVIE = Movie ( self, "ER_comp_all" ) frameMul = 30 if 0 : MOVIE.add ( XfInterpM2 (t, t+d, s1_, s1_, s1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, s2_, s2_, s2, []) ) t = 0; MOVIE.add ( SetAlpha ( t, [rAll, eAll], 1.0 ) ) MOVIE.add ( SetAlpha ( t, [rAll, eAll], 1.0 ) ) MOVIE.add ( Hide ( t, ecs + rcs ) ) MOVIE.add ( Show ( t, [eAll,rAll] ) ) # rotate y t = 0; d = 6 * frameMul MOVIE.add ( RotateM (t, t+d, ecs+[eAll], eAll.comv, [0,-1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, rcs+[rAll], rAll.comv, [0,-1,0], 360.0) ) # rotate x t = t+d; d = 6 * frameMul MOVIE.add ( RotateM (t, t+d, ecs+[eAll], eAll.comv, [-1,0,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, rcs+[rAll], rAll.comv, [-1,0,0], 360.0) ) # show seg t = t+d; d = 3 * frameMul MOVIE.add ( Show ( t, ecs + rcs ) ) MOVIE.add ( VaryAlpha ( t, t+d, [eAll,rAll], 1.0, 0.1) ) MOVIE.add ( Hide ( t+d, [eAll,rAll] ) ) MOVIE.add ( VaryThr ( t, t+d, rER, .9, .5 ) ) # rotate y t = t+d; d = 6 * frameMul MOVIE.add ( RotateM (t, t+d, ecs+[eAll], eAll.comv, [0,-1,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, rcs+[rAll], rAll.comv, [0,-1,0], 360.0) ) # rotate x t = t+d; d = 6 * frameMul MOVIE.add ( RotateM (t, t+d, ecs+[eAll], eAll.comv, [-1,0,0], 360.0) ) MOVIE.add ( RotateM (t, t+d, rcs+[rAll], rAll.comv, [-1,0,0], 360.0) ) MOVIE.make () #MOVIE.add ( VaryThr ( t, t+d, cx, 6, 2 ) ) def ER2_relion ( self ) : self.ClearFrames () self.GetAllAMods() if 0 : cx_eman = self.oms["complex_g6.mrc"].FromMap () cx_relion = self.oms["cx-relion-g3.mrc"].FromMap () cx_diff = self.oms["complex_g6--cx-relion-g3.mrc"].FromMap () rAll0 = self.oms["ER-ccd-relion25A-setsf_0.mrc"].FromMap () rAll = self.oms["ER-ccd-relion25A-setsf_g4.mrc"].FromMap () rER = self.oms["ER-ccd-relion25A-setsf_ER_gp4.mrc"].FromMap () rP300 = self.oms["ER-ccd-relion25A-setsf_P300_gp4.mrc"].FromMap () rSrcA = self.oms["ER-ccd-relion25A-setsf_SRC3a_gp4.mrc"].FromMap () rSrcB = self.oms["ER-ccd-relion25A-setsf_SRC3b_gp4.mrc"].FromMap () fP300r = self.oms["p300-relion-cali_gp4.mrc"].FromMap () fP300e = self.oms["p300f.mrc"].FromMap () fErMol = self.oms["1G50.pdb"].FromMol () rcs = [rER,rP300,rSrcA,rSrcB] MOVIE = Movie ( self, "ER_relion" ) frameMul = 30 if 0 : MOVIE.add ( XfInterpM2 (t, t+d, s1_, s1_, s1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, s2_, s2_, s2, []) ) t = 0; #MOVIE.add ( SetAlpha ( t, [rAll, eAll], 1.0 ) ) #MOVIE.add ( SetAlpha ( t, [rAll, eAll], 1.0 ) ) #MOVIE.add ( Hide ( t, ecs + rcs ) ) #MOVIE.add ( Show ( t, [eAll,rAll] ) ) # rotate y t = 0; d = 6 * frameMul MOVIE.add ( RotateM (t, t+d, rcs+[rAll,fP300r,fP300e,fErMol], rAll.comv, [0,-1,0], 360.0) ) # rotate x t = t+d; d = 6 * frameMul MOVIE.add ( RotateM (t, t+d, rcs+[rAll,fP300r,fP300e,fErMol], rAll.comv, [-1,0,0], 360.0) ) MOVIE.make () def P22_Portal_Avg ( self ) : self.ClearFrames () self.GetAllAMods() if 0 : cx_eman = self.oms["complex_g6.mrc"].FromMap () cx_relion = self.oms["cx-relion-g3.mrc"].FromMap () cx_diff = self.oms["complex_g6--cx-relion-g3.mrc"].FromMap () portal1 = self.oms["_s2Ag.mrc"].FromMap () portal2 = self.oms["s2bf_gp1_FFz.mrc"].FromMap () portal3 = self.oms["s2bf_gp1_FFz_2.mrc"].FromMap () #pctr = self.oms["s2bf_c12m2_portal3z_gp1_FF_ctr.mrc"].FromMap () mavg = self.oms["m1_avg.pdb"].FromMol () m1 = self.oms["3lj5_1p_modeller.pdb"].FromMol () m2 = self.oms["m1i.pdb"].FromMol () m3 = self.oms["3lj5_1p_phyre.pdb"].FromMol () MOVIE = Movie ( self, "ER_p22_portal_Avg" ) frameMul = 30 if 0 : MOVIE.add ( XfInterpM2 (t, t+d, s1_, s1_, s1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, s2_, s2_, s2, []) ) t = 0; # rotate y t = 0; d = 20 * frameMul MOVIE.add ( RotateM (t, t+d, [portal2,portal3,mavg,m1,m2,m3], portal2.comv, [0,-1,0], 360.0, "linear") ) MOVIE.make () def P22_Portal_Cycle ( self ) : self.ClearFrames () self.GetAllAMods() if 0 : cx_eman = self.oms["complex_g6.mrc"].FromMap () cx_relion = self.oms["cx-relion-g3.mrc"].FromMap () cx_diff = self.oms["complex_g6--cx-relion-g3.mrc"].FromMap () portal1 = self.oms["_s2Ag.mrc"].FromMap () portal2 = self.oms["s2bf_gp1_FFz_2.mrc"].FromMap () #pctr = self.oms["s2bf_c12m2_portal3z_gp1_FF_ctr.mrc"].FromMap () m1 = self.oms["m1_mdff_g3.pdb"].FromMol () m2 = self.oms["m2_mdff_g3.pdb"].FromMol () m3 = self.oms["m3_mdff_g3.pdb"].FromMol () m4 = self.oms["m4_mdff_g3.pdb"].FromMol () m5 = self.oms["m5_mdff_g3.pdb"].FromMol () m6 = self.oms["m6_mdff_g3.pdb"].FromMol () m7 = self.oms["m7_mdff_g3.pdb"].FromMol () m8 = self.oms["m8_mdff_g3.pdb"].FromMol () m9 = self.oms["m9_mdff_g3.pdb"].FromMol () if 1 : m1 = self.oms["m2i.pdb"].FromMol () m2 = self.oms["m3i.pdb"].FromMol () m3 = self.oms["m4i.pdb"].FromMol () m4 = self.oms["m5i.pdb"].FromMol () m5 = self.oms["m6i.pdb"].FromMol () m6 = self.oms["m7i.pdb"].FromMol () m7 = self.oms["m8i.pdb"].FromMol () m8 = self.oms["m9i.pdb"].FromMol () m9 = self.oms["m10i.pdb"].FromMol () mods = [m1, m2, m3, m4, m5, m6, m7, m8, m9] MOVIE = Movie ( self, "P22_Portal_Cycle" ) frameMul = 30 if 0 : MOVIE.add ( XfInterpM2 (t, t+d, s1_, s1_, s1, []) ) MOVIE.add ( XfInterpM2 (t, t+d, s2_, s2_, s2, []) ) t = 0; # rotate y t = 0; d = 20 * frameMul MOVIE.add ( RotateM (t, t+d, [portal2]+mods, portal2.comv, [0,-1,0], 360.0, "linear") ) MOVIE.add ( Cycle (t, t+d, mods, 10 ) ) MOVIE.make () def Reset ( self ) : print "Resetting" self.fri = 0 def SaveFrame (self, framei, ncopies = 1 ) : chimera.viewer.postRedisplay() self.toplevel_widget.update_idletasks () chimera.printer.saveImage ( self.framesPath + "%06d.png" % framei ) import shutil for i in range (ncopies-1) : framei += 1 shutil.copy ( self.framesPath + "%06d.png" % (framei-1), self.framesPath + "%06d.png" % framei ) def SaveKeyFrame (self, framei, text ) : chimera.viewer.postRedisplay() self.toplevel_widget.update_idletasks () chimera.printer.saveImage ( self.framesPath + "_k_%06d_%s.png" % (framei,text) ) def ClearFrames (self) : import os for f in os.listdir ( self.framesPath ) : if f.endswith(".png") : os.remove(self.framesPath + f) def MakeMovie (self, name = "movie") : args = [ "/Users/greg/_mol/Chimera.app/Contents/Resources/bin/ffmpeg", "-r", "30", "-i", self.framesPath + "%06d.png", "-y", "-qscale", "1", "-b", "9000", "-vcodec", "mpeg4", "-f", "mov", self.framesPath + "_"+name+".mov" ] print "- running: " for a in args : print a, print "" import subprocess subprocess.call ( args ) print "done!\n" # ---------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------- class Frames(object) : def __init__ (self, startStep, endStep) : self.start = startStep self.end = endStep #print " - frames - %d|%d" % (self.start, self.end) def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return if self.end <= self.start : self.f = 1 else : self.f = float (stepAt - self.start) / float (self.end - self.start) #print " - (%d|%d|%d) f:%.2f" % (self.start, stepAt, self.end, self.f), class VaryThr (Frames) : def __init__ (self, startStep, endStep, animMod, startThr, endThr) : self.animMod = animMod self.startThr = startThr self.endThr = endThr #print " - vary thr - %s - %.3f|%.3f" % (animMod.mod.name, self.startThr, self.endThr) super(VaryThr, self).__init__(startStep, endStep) def step (self, stepAt) : if stepAt < self.start or stepAt > self.end : return #print " - VT step", super(VaryThr, self).step(stepAt) thr = self.startThr + self.f * (self.endThr - self.startThr) print " - thr:%.3f" % thr if type (self.animMod) == list : for om in self.animMod : om.SetSurfThr ( thr ) else : self.animMod.SetSurfThr ( thr ) class VaryAlpha (Frames) : def __init__ (self, startStep, endStep, animMod, startA, endA) : self.animMod = animMod self.startA = startA self.endA = endA #print " - vary A - %s - %.3f|%.3f" % (animMod.mod.name, self.startA, self.endA) super(VaryAlpha, self).__init__(startStep, endStep) def step (self, stepAt) : if stepAt < self.start or stepAt > self.end : return #print " - A step", super(VaryAlpha, self).step(stepAt) a = self.startA + self.f * (self.endA - self.startA) #print " - a:%.3f" % a if type (self.animMod) == list : for om in self.animMod : om.SetAlpha ( a ) else : self.animMod.SetAlpha ( a ) class SetAlpha (Frames) : def __init__ (self, atStep, animMod, alpha) : self.start = self.end = atStep self.animMod = animMod self.toAlpha = alpha self.triggered = False def step (self, stepAt) : if stepAt < self.start or self.triggered : return self.triggered = True print " - set A:%.3f" % self.toAlpha if type (self.animMod) == list : for om in self.animMod : om.SetAlpha ( self.toAlpha ) else : self.animMod.SetAlpha ( self.toAlpha ) class SetThr (Frames) : def __init__ (self, atStep, animMod, thr) : self.start = self.end = atStep self.animMod = animMod self.toThr = thr self.triggered = False def step (self, stepAt) : if stepAt < self.start or self.triggered : return self.triggered = True print " - set thr:%.3f" % self.toThr if type (self.animMod) == list : for om in self.animMod : om.SetSurfThr ( self.toThr ) else : self.animMod.SetSurfThr ( self.toThr ) class Hide : def __init__ (self, atStep, animMod) : self.animMod = animMod self.start = self.end = atStep self.triggered = False #if type (animMod) == list : # print " - hide - LIST - %.3f" % (self.start) #else : # print " - hide - %s - %.3f" % (animMod.mod.name, self.start) def step (self, stepAt) : if stepAt < self.start or self.triggered : return self.triggered = True if type (self.animMod) == list : for om in self.animMod : om.Hide () else : self.animMod.Hide() class Show : def __init__ (self, atStep, animMod) : self.animMod = animMod self.start = self.end = atStep self.triggered = False #if type (animMod) == list : # print " - show - LIST - %.3f" % (self.start) #else : # print " - show - %s - %.3f" % (animMod.mod.name, self.start) def step (self, stepAt) : if stepAt < self.start or self.triggered : return self.triggered = True if type (self.animMod) == list : for om in self.animMod : om.Show () else : self.animMod.Show() class Select : def __init__ (self, atStep, animMod) : self.animMod = animMod self.start = self.end = atStep self.triggered = False if type (animMod) == list : print " - select - LIST - %.3f" % (self.start) else : print " - select - %s - %.3f" % (animMod.mod.name, self.start) def step (self, stepAt) : if stepAt < self.start or self.triggered : return self.triggered = True chimera.selection.clearCurrent () if type (self.animMod) == list : mods = [] for om in self.animMod : mods.append ( om.mod ) chimera.selection.addCurrent ( mods ) else : chimera.selection.addCurrent ( [self.animMod.mod] ) class ColorContacts : def __init__ (self, atStep, animMods) : self.animMods = animMods self.start = self.end = atStep self.triggered = False def step (self, stepAt) : if stepAt < self.start or self.triggered : return self.triggered = True for i in range ( len(self.animMods) ) : for j in range ( len(self.animMods) ) : if i != j : ColorMapsByContact ( self.animMods[i].mod, self.animMods[j].mod ) class Rotate (Frames) : def __init__ ( self, startStep, endStep, animMod, COM, axis, degTot ) : self.degInc = float(degTot) / float(endStep - startStep + 1) if type(animMod) == dict : print " - rotate - DICT - %.2f deg in steps of %.2f" % (degTot, self.degInc) else : print " - rotate - %s - %.2f deg in steps of %.2f" % (animMod.mod.name, degTot, self.degInc) super(Rotate, self).__init__(startStep, endStep) self.animMod = animMod self.rotateCOM = COM self.rotateAxis = axis def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return print " - ROT step", #super(Frames, self).step(stepAt) if type(self.animMod) == dict : print " - dict - %.3f" % (self.degInc) for om in self.animMod.values() : om.Rotate ( self.degInc, self.rotateCOM, self.rotateAxis ) else : print " - %s - %.3f" % (self.animMod.mod.name, self.degInc) self.animMod.Rotate ( self.degInc, self.rotateCOM, self.rotateAxis ) class XfInterp (Frames) : def __init__ ( self, startStep, endStep, animMod, startXf, startCOM, endXf, endCOM ) : print " - xf interp - %s" % (animMod.mod.name) super(XfInterp, self).__init__(startStep, endStep) #self.startMod = start #self.endMod = end self.animMod = animMod endCOM_LC = chimera.Point ( endCOM[0], endCOM[1], endCOM[2] ) endCOM_WC = endXf.apply ( endCOM_LC ) startCOM_LC = chimera.Point ( startCOM[0], startCOM[1], startCOM[2] ) startCOM_WC = startXf.apply ( startCOM_LC ) self.t_vec = endCOM_WC - startCOM_WC self.to_pos = endCOM_WC self.comlc = startCOM_LC self.comwc = startCOM_WC self.xf0 = startXf self.xf1 = endXf def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return print " - XFI step", #super(Frames, self).step(stepAt) xf0 = self.xf0 xf1 = self.xf1 from quaternion import Quaternion, slerp t0 = xf0.getTranslation () q0 = Quaternion () q0.fromXform ( xf0 ) #q0i = q0.inverse () t1 = xf0.getTranslation () q1 = Quaternion () q1.fromXform ( xf1 ) super(XfInterp, self).step(stepAt) f = self.f # linear interpolation f1, f2 = (1.0-f), f # cubic interpolation f1, f2 = 2.0*f*f*f-3.0*f*f+1.0, 3*f*f-2*f*f*f #pos = t0 * f1 + t1 * f2 #s = q0.s * f1 + q1.s * f2 #v = q0.v * f1 + q1.v * f2 #Q = Quaternion ( s, v ) Q = slerp ( q0, q1, f2 ) Q.normalize() tv = self.t_vec * f2 xfi = self.xf0.__copy__ () xfi.premultiply ( chimera.Xform.translation (tv) ) xf_to_0 = chimera.Xform.translation ( self.comlc.toVector() * -1.0 ) xf_to_com = chimera.Xform.translation ( self.comlc.toVector() ) xf_rot = Q.Xform () xf_to_pos = chimera.Xform.translation ( self.comwc.toVector() + tv ) #xf_to_pos.multiply ( xf_to_com ) xf_to_pos.multiply ( xf_rot ) xf_to_pos.multiply ( xf_to_0 ) self.animMod.mod.openState.xform = xf_to_pos self.animMod.toCOM = True class XfInterpM (Frames) : def __init__ ( self, startStep, endStep, animMod, startXf, startCOM, endXf, endCOM, amods ) : print " - xf interp - %s" % (animMod.mod.name) super(XfInterpM, self).__init__(startStep, endStep) #self.startMod = start #self.endMod = end self.animMod = animMod self.amods = amods endCOM_LC = chimera.Point ( endCOM[0], endCOM[1], endCOM[2] ) endCOM_WC = endXf.apply ( endCOM_LC ) startCOM_LC = chimera.Point ( startCOM[0], startCOM[1], startCOM[2] ) startCOM_WC = startXf.apply ( startCOM_LC ) self.t_vec = endCOM_WC - startCOM_WC self.to_pos = endCOM_WC self.comlc = startCOM_LC self.comwc = startCOM_WC self.xf0 = startXf self.xf1 = endXf def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return print " - XFI step", #super(Frames, self).step(stepAt) xf0 = self.xf0 xf1 = self.xf1 from quaternion import Quaternion, slerp t0 = xf0.getTranslation () q0 = Quaternion () q0.fromXform ( xf0 ) #q0i = q0.inverse () t1 = xf0.getTranslation () q1 = Quaternion () q1.fromXform ( xf1 ) super(XfInterpM, self).step(stepAt) f = self.f # linear interpolation f1, f2 = (1.0-f), f # cubic interpolation f1, f2 = 2.0*f*f*f-3.0*f*f+1.0, 3*f*f-2*f*f*f #pos = t0 * f1 + t1 * f2 #s = q0.s * f1 + q1.s * f2 #v = q0.v * f1 + q1.v * f2 #Q = Quaternion ( s, v ) if stepAt == self.start : for amod in self.amods : amod.xf0 = amod.mod.openState.xform amod.xfl = self.xf0.inverse() amod.xfl.multiply ( amod.xf0 ) #amod.q0 = Quaternion () #amod.q0.fromXform ( amod.xf0 ) #amod.comlc = chimera.Point ( amod.COM[0], amod.COM[1], amod.COM[2] ) #amod.comwc = amod.xf0.apply ( amod.comlc ).toVector() #amod.comwcv = amod.comwc - self.comwc.toVector() Q = slerp ( q0, q1, f2 ) Q.normalize() tv = self.t_vec * f2 xf_to_pos = chimera.Xform.translation ( self.comwc.toVector() + tv ) xf_to_pos.multiply ( Q.Xform () ) xf_to_pos.multiply ( chimera.Xform.translation ( self.comlc.toVector() * -1.0 ) ) self.animMod.mod.openState.xform = xf_to_pos for amod in self.amods : #xf_to_pos = chimera.Xform.translation ( amod.comwc - amod.comwcv + tv ) #xf_to_pos.multiply ( Q.Xform () ) #xf_to_pos.multiply ( chimera.Xform.translation ( amod.comwcv ) ) #xf_to_pos.multiply ( chimera.Xform.translation ( amod.comlc.toVector() ) ) #xf_to_pos.multiply ( amod.q0.Xform () ) #xf_to_pos.multiply ( chimera.Xform.translation ( amod.comlc.toVector() * -1.0 ) ) xf = amod.xfl.__copy__() xf.premultiply ( self.animMod.mod.openState.xform ) amod.mod.openState.xform = xf class XfInterpM2 (Frames) : def __init__ ( self, startStep, endStep, animMod, startMod, targetMod, amods ) : print " - xf interp - %s" % (animMod.mod.name) super(XfInterpM2, self).__init__(startStep, endStep) #self.startMod = start #self.endMod = end self.animMod = animMod self.startMod = startMod self.targetMod = targetMod self.amods = amods def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return if stepAt == self.start : endCOM_LC = chimera.Point ( self.targetMod.COM[0], self.targetMod.COM[1], self.targetMod.COM[2] ) endCOM_WC = self.targetMod.mod.openState.xform.apply ( endCOM_LC ) startCOM_LC = chimera.Point ( self.startMod.COM[0], self.startMod.COM[1], self.startMod.COM[2] ) startCOM_WC = self.startMod.mod.openState.xform.apply ( startCOM_LC ) self.t_vec = endCOM_WC - startCOM_WC self.to_pos = endCOM_WC self.comlc = startCOM_LC self.comwc = startCOM_WC self.xf0 = self.startMod.mod.openState.xform self.xf1 = self.targetMod.mod.openState.xform print " - XFI step", #super(Frames, self).step(stepAt) xf0 = self.xf0 xf1 = self.xf1 from quaternion import Quaternion, slerp t0 = xf0.getTranslation () q0 = Quaternion () q0.fromXform ( xf0 ) #q0i = q0.inverse () t1 = xf0.getTranslation () q1 = Quaternion () q1.fromXform ( xf1 ) super(XfInterpM2, self).step(stepAt) f = self.f # linear interpolation f1, f2 = (1.0-f), f # cubic interpolation f1, f2 = 2.0*f*f*f-3.0*f*f+1.0, 3*f*f-2*f*f*f #pos = t0 * f1 + t1 * f2 #s = q0.s * f1 + q1.s * f2 #v = q0.v * f1 + q1.v * f2 #Q = Quaternion ( s, v ) if stepAt == self.start : for amod in self.amods : try: amod.xf0 = amod.mod.openState.xform except : print " amod has no mod: ", amod.name i = blah amod.xfl = self.xf0.inverse() amod.xfl.multiply ( amod.xf0 ) #amod.q0 = Quaternion () #amod.q0.fromXform ( amod.xf0 ) #amod.comlc = chimera.Point ( amod.COM[0], amod.COM[1], amod.COM[2] ) #amod.comwc = amod.xf0.apply ( amod.comlc ).toVector() #amod.comwcv = amod.comwc - self.comwc.toVector() Q = slerp ( q0, q1, f2 ) Q.normalize() tv = self.t_vec * f2 xf_to_pos = chimera.Xform.translation ( self.comwc.toVector() + tv ) xf_to_pos.multiply ( Q.Xform () ) xf_to_pos.multiply ( chimera.Xform.translation ( self.comlc.toVector() * -1.0 ) ) self.animMod.mod.openState.xform = xf_to_pos for amod in self.amods : #xf_to_pos = chimera.Xform.translation ( amod.comwc - amod.comwcv + tv ) #xf_to_pos.multiply ( Q.Xform () ) #xf_to_pos.multiply ( chimera.Xform.translation ( amod.comwcv ) ) #xf_to_pos.multiply ( chimera.Xform.translation ( amod.comlc.toVector() ) ) #xf_to_pos.multiply ( amod.q0.Xform () ) #xf_to_pos.multiply ( chimera.Xform.translation ( amod.comlc.toVector() * -1.0 ) ) xf = amod.xfl.__copy__() xf.premultiply ( self.animMod.mod.openState.xform ) amod.mod.openState.xform = xf class SetXf (Frames) : def __init__ ( self, startStep, amods, xfMod ) : print " - xf set - %s" % (xfMod.mod.name) super(SetXf, self).__init__(startStep, startStep) self.xfMod = xfMod self.amods = amods def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return if stepAt == self.start : for amod in self.amods : amod.mod.openState.xform = self.xfMod.mod.openState.xform class Rotate2 (Frames) : def __init__ ( self, startStep, endStep, animMod, COM, axis, totDeg ) : print " - rotate 2 - %s" % (animMod.mod.name) print " axis: ", axis print " totDeg: ", totDeg super(Rotate2, self).__init__(startStep, endStep) self.animMod = animMod self.totDeg = totDeg self.axis = chimera.Vector ( axis[0], axis[1], axis[2] ) self.comlc = chimera.Point ( COM[0], COM[1], COM[2] ) def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return if stepAt == self.start : #print " - rotate 2 - first step", self.comwc = self.animMod.mod.openState.xform.apply ( self.comlc ) self.xf0 = self.animMod.mod.openState.xform else : #print " - rotate 2 - step", pass #super(Frames, self).step(stepAt) from quaternion import Quaternion t0 = self.xf0.getTranslation () q0 = Quaternion () q0.fromXform ( self.xf0 ) super(Rotate2, self).step(stepAt) f = self.f # linear interpolation f1, f2 = (1.0-f), f # cubic interpolation f1, f2 = 2.0*f*f*f-3.0*f*f+1.0, 3*f*f-2*f*f*f deg = self.totDeg * f2 print " - at deg ", deg xf_to_0 = chimera.Xform.translation ( self.comlc.toVector() * -1.0 ) #xf_to_com = chimera.Xform.translation ( self.comlc.toVector() ) xf_rot0 = q0.Xform () xf_rotR = chimera.Xform.rotation ( self.axis, deg ) xf_to_pos = chimera.Xform.translation ( self.comwc.toVector() ) #xf_to_pos.multiply ( xf_to_com ) xf_to_pos.multiply ( xf_rotR ) xf_to_pos.multiply ( xf_rot0 ) xf_to_pos.multiply ( xf_to_0 ) self.animMod.mod.openState.xform = xf_to_pos self.animMod.toCOM = True class RotateM (Frames) : def __init__ ( self, startStep, endStep, animMods, COM, axis, totDeg, itype="cubic" ) : print " - rotate M" print " axis: ", axis print " totDeg: ", totDeg super(RotateM, self).__init__(startStep, endStep) self.animMods = animMods self.totDeg = totDeg self.axis = chimera.Vector ( axis[0], axis[1], axis[2] ) self.comlc = chimera.Point ( COM[0], COM[1], COM[2] ) self.itype = itype def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return from quaternion import Quaternion if stepAt == self.start : #print " - rotate M - first step", self.comwc = self.animMods[0].mod.openState.xform.apply ( self.comlc ) for amod in self.animMods : amod.xf0 = amod.mod.openState.xform amod.q0 = Quaternion () amod.q0.fromXform ( amod.xf0 ) amod.comlc = chimera.Point ( amod.COM[0], amod.COM[1], amod.COM[2] ) amod.comwcv = amod.xf0.apply ( amod.comlc ).toVector() - self.comwc.toVector() #super(Frames, self).step(stepAt) super(RotateM, self).step(stepAt) f = self.f f1, f2 = 2.0*f*f*f-3.0*f*f+1.0, 3*f*f-2*f*f*f # cubic interpolation if not "cubic" == self.itype : f1, f2 = (1.0-f), f # linear interpolation deg = self.totDeg * f2 #print " - at deg ", deg for amod in self.animMods : xf_to_0 = chimera.Xform.translation ( amod.comlc.toVector() * -1.0 ) xf_to_P = chimera.Xform.translation ( amod.comwcv ) xf_rot0 = amod.q0.Xform () xf_rotR = chimera.Xform.rotation ( self.axis, deg ) xf_to_pos = chimera.Xform.translation ( self.comwc.toVector() ) #xf_to_pos.multiply ( xf_to_com ) xf_to_pos.multiply ( xf_rotR ) xf_to_pos.multiply ( xf_to_P ) xf_to_pos.multiply ( xf_rot0 ) xf_to_pos.multiply ( xf_to_0 ) amod.mod.openState.xform = xf_to_pos class RotateM2 (Frames) : def __init__ ( self, startStep, endStep, animMods, COM, axis, totDeg ) : print " - rotate M" print " axis: ", axis print " totDeg: ", totDeg super(RotateM2, self).__init__(startStep, endStep) self.animMods = animMods self.totDeg = totDeg self.axis = chimera.Vector ( axis[0], axis[1], axis[2] ) self.comlc = chimera.Point ( COM[0], COM[1], COM[2] ) def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return from quaternion import Quaternion if stepAt == self.start : #print " - rotate M - first step", self.comwc = self.animMods[0].mod.openState.xform.apply ( self.comlc ) for amod in self.animMods : amod.xf0 = amod.mod.openState.xform amod.q0 = Quaternion () amod.q0.fromXform ( amod.xf0 ) amod.comlc = chimera.Point ( amod.COM[0], amod.COM[1], amod.COM[2] ) amod.comwcv = amod.xf0.apply ( amod.comlc ).toVector() - self.comwc.toVector() #super(Frames, self).step(stepAt) super(RotateM2, self).step(stepAt) f = self.f #f1, f2 = (1.0-f), f # linear interpolation f1, f2 = 2.0*f*f*f-3.0*f*f+1.0, 3*f*f-2*f*f*f # cubic interpolation deg = self.totDeg * f2 #print " - at deg ", deg for amod in self.animMods[1:] : xf_to_0 = chimera.Xform.translation ( amod.comlc.toVector() * -1.0 ) xf_to_P = chimera.Xform.translation ( amod.comwcv ) xf_rot0 = amod.q0.Xform () xf_rotR = chimera.Xform.rotation ( self.axis, deg ) xf_to_pos = chimera.Xform.translation ( self.comwc.toVector() ) #xf_to_pos.multiply ( xf_to_com ) xf_to_pos.multiply ( xf_rotR ) xf_to_pos.multiply ( xf_to_P ) xf_to_pos.multiply ( xf_rot0 ) xf_to_pos.multiply ( xf_to_0 ) amod.mod.openState.xform = xf_to_pos class RotateMove (Frames) : def __init__ ( self, startStep, endStep, animMods, COM, axis, totDeg, D, itype="cubic" ) : #print " - rotate and move" #print " axis: ", axis #print " totDeg: ", totDeg #print " D: ", D super(RotateMove, self).__init__(startStep, endStep) self.animMods = animMods self.totDeg = totDeg self.axis = chimera.Vector ( axis[0], axis[1], axis[2] ) self.comlc = chimera.Point ( COM[0], COM[1], COM[2] ) self.itype = itype self.D = chimera.Vector ( D[0], D[1], D[2] ) def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return from quaternion import Quaternion if stepAt == self.start : #print " - rotate-move - first step", self.comwc = self.animMods[0].mod.openState.xform.apply ( self.comlc ) for amod in self.animMods : amod.xf0 = amod.mod.openState.xform amod.q0 = Quaternion () amod.q0.fromXform ( amod.xf0 ) amod.comlc = chimera.Point ( amod.COM[0], amod.COM[1], amod.COM[2] ) amod.comwcv = amod.xf0.apply ( amod.comlc ).toVector() - self.comwc.toVector() #super(Frames, self).step(stepAt) super(RotateMove, self).step(stepAt) f = self.f f1, f2 = 2.0*f*f*f-3.0*f*f+1.0, 3*f*f-2*f*f*f # cubic interpolation if not "cubic" == self.itype : f1, f2 = (1.0-f), f # linear interpolation deg = self.totDeg * f2 atD = self.D * f2 #print " - at deg ", deg for amod in self.animMods : xf_to_0 = chimera.Xform.translation ( amod.comlc.toVector() * -1.0 ) xf_to_P = chimera.Xform.translation ( amod.comwcv ) xf_rot0 = amod.q0.Xform () xf_rotR = chimera.Xform.rotation ( self.axis, deg ) xf_to_pos = chimera.Xform.translation ( self.comwc.toVector() + atD ) #xf_to_pos.multiply ( xf_to_com ) xf_to_pos.multiply ( xf_rotR ) xf_to_pos.multiply ( xf_to_P ) xf_to_pos.multiply ( xf_rot0 ) xf_to_pos.multiply ( xf_to_0 ) amod.mod.openState.xform = xf_to_pos class RotateMoveTo (Frames) : def __init__ ( self, startStep, endStep, animMods, COM, axis, totDeg, D, itype="cubic" ) : print " - rotate and move" print " axis: ", axis print " totDeg: ", totDeg print " To: ", D super(RotateMoveTo, self).__init__(startStep, endStep) self.animMods = animMods self.totDeg = totDeg self.axis = chimera.Vector ( axis[0], axis[1], axis[2] ) self.comlc = chimera.Point ( COM[0], COM[1], COM[2] ) self.itype = itype self.ToP = chimera.Point ( D[0], D[1], D[2] ) def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return from quaternion import Quaternion if stepAt == self.start : #print " - rotate-move - first step", self.comwc = self.animMods[0].mod.openState.xform.apply ( self.comlc ) self.D = self.ToP - self.comwc for amod in self.animMods : amod.xf0 = amod.mod.openState.xform amod.q0 = Quaternion () amod.q0.fromXform ( amod.xf0 ) amod.comlc = chimera.Point ( amod.COM[0], amod.COM[1], amod.COM[2] ) amod.comwcv = amod.xf0.apply ( amod.comlc ).toVector() - self.comwc.toVector() #super(Frames, self).step(stepAt) super(RotateMoveTo, self).step(stepAt) f = self.f f1, f2 = 2.0*f*f*f-3.0*f*f+1.0, 3*f*f-2*f*f*f # cubic interpolation if not "cubic" == self.itype : f1, f2 = (1.0-f), f # linear interpolation deg = self.totDeg * f2 atD = self.D * f2 #print " - at deg ", deg for amod in self.animMods : T = self.comwc.toVector() + atD xf_to_0 = chimera.Xform.translation ( amod.comlc.toVector() * -1.0 ) xf_to_P = chimera.Xform.translation ( amod.comwcv ) xf_rot0 = amod.q0.Xform () xf_rotR = chimera.Xform.rotation ( self.axis, deg ) xf_to_pos = chimera.Xform.translation ( T ) #xf_to_pos.multiply ( xf_to_com ) xf_to_pos.multiply ( xf_rotR ) xf_to_pos.multiply ( xf_to_P ) xf_to_pos.multiply ( xf_rot0 ) xf_to_pos.multiply ( xf_to_0 ) amod.mod.openState.xform = xf_to_pos class Move (Frames) : def __init__ ( self, startStep, endStep, animMods, COM, D, itype="cubic" ) : print " - move M" print " D: ", D print " COM: ", COM super(Move, self).__init__(startStep, endStep) self.animMods = animMods self.D = chimera.Vector ( D[0], D[1], D[2] ) self.comlc = chimera.Point ( COM[0], COM[1], COM[2] ) self.itype = itype def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return from quaternion import Quaternion if stepAt == self.start : #print " - move M - first step", self.comwc = self.animMods[0].mod.openState.xform.apply ( self.comlc ) for amod in self.animMods : amod.xf0 = amod.mod.openState.xform amod.q0 = Quaternion () amod.q0.fromXform ( amod.xf0 ) amod.comlc = chimera.Point ( amod.COM[0], amod.COM[1], amod.COM[2] ) amod.comwcv = amod.xf0.apply ( amod.comlc ).toVector() - self.comwc.toVector() #super(Frames, self).step(stepAt) super(Move, self).step(stepAt) f = self.f f1, f2 = 2.0*f*f*f-3.0*f*f+1.0, 3*f*f-2*f*f*f # cubic interpolation if not "cubic" == self.itype : f1, f2 = (1.0-f), f # linear interpolation #deg = self.totDeg * f2 #print " - at deg ", deg atD = D * f for amod in self.animMods : xf_to_0 = chimera.Xform.translation ( amod.comlc.toVector() * -1.0 ) xf_to_P = chimera.Xform.translation ( amod.comwcv ) xf_rot0 = amod.q0.Xform () xf_rotR = chimera.Xform.rotation ( self.axis, deg ) xf_to_pos = chimera.Xform.translation ( self.comwc.toVector() ) xf_to_pos.multiply ( xf_rotR ) xf_to_pos.multiply ( xf_to_P ) xf_to_pos.multiply ( xf_rot0 ) xf_to_pos.multiply ( xf_to_0 ) amod.mod.openState.xform = xf_to_pos class Scale (Frames) : def __init__ ( self, startStep, endStep, targetScale ) : print " - xf scale" super(Scale, self).__init__(startStep, endStep) self.targetScale = targetScale self.scaleSign = 1.0 self.scaleIncr = targetScale / (endStep - startStep) def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return print " - scale step %f" % self.targetScale #super(Frames, self).step(stepAt) cmd = "scale %f" % self.targetScale chimera.runCommand ( cmd ) class Cycle (Frames) : def __init__ ( self, startStep, endStep, animMods, dstep ) : print " - Cycle M" print " dstep: ", dstep print " num models: ", len(animMods) super(Cycle, self).__init__(startStep, endStep) self.animMods = animMods self.dstep = dstep self.atMod = 0 def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return super(Cycle, self).step(stepAt) #f = self.f #rangef = float (self.end - self.start) import numpy modf = numpy.floor ( float(self.atMod) / float(self.dstep) ) modi = int ( modf ) % len(self.animMods) #print " step %d (%d -> %d) d %d, modi: %d" % (stepAt, self.start, self.end, self.dstep, modi) for ai, amod in enumerate (self.animMods) : if ai == modi : amod.mod.display = True else : amod.mod.display = False self.atMod += 1 # chimera.runCommand ( "clip hither -2" ) class Clip (Frames) : def __init__ ( self, startStep, endStep, totalC ) : print " - Clip" print " totalC: ", totalC super(Clip, self).__init__(startStep, endStep) self.totalC = totalC self.dc = float(totalC) / float(endStep-startStep) def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return super(Clip, self).step(stepAt) print " clip step %d (%d -> %d) d %.5f, total %d" % (stepAt, self.start, self.end, self.dc, self.totalC) chimera.runCommand ( "clip hither %.5f" % self.dc ) class ClipOff (Frames) : def __init__ ( self, startStep ) : print " - Clip Off" super(ClipOff, self).__init__(startStep, startStep) self.done = False def step ( self, stepAt ) : if stepAt < self.start or stepAt > self.end : return super(ClipOff, self).step(stepAt) if self.done : return print " clip off step %d (%d -> %d)" % (stepAt, self.start, self.end) chimera.runCommand ( "clip off" ) self.done = True class Movie : def __init__ (self, dlg, movieName = "movie" ) : self.anims = [] self.start = 10000000 self.end = 0 self.movieName = movieName self.dlg = dlg self.keys = {} def add ( self, anim ) : if anim.start < self.start : self.start = anim.start if anim.end > self.end : self.end = anim.end self.anims.append ( anim ) def addKey ( self, framei, text ) : self.keys[framei] = text def make (self, saveMovie = True) : saveMovie = self.dlg.makeMovie.get() stop = self.dlg.stopMovie.get() if saveMovie : self.dlg.ClearFrames () fri = 0 for i in range ( self.start, self.end+1 ) : saveMovie = self.dlg.makeMovie.get() stop = self.dlg.stopMovie.get() print "%d - " % i if stop : print "Stopped" break for anim in self.anims : anim.step ( i ) chimera.viewer.postRedisplay() self.dlg.toplevel_widget.update_idletasks () if i in self.keys : self.dlg.SaveKeyFrame ( i, self.keys[i] ) if saveMovie : print "." self.dlg.SaveFrame ( fri, 1 ) fri += 1 if saveMovie : self.dlg.MakeMovie ( self.movieName ) def run (self) : self.make ( False ) class AnimatableModel : def __init__ (self) : self.mod = None def FromMod ( self, fm ) : self.mod = fm self.xf0 = fm.openState.xform self.xf = fm.openState.xform #print "New AM:", fm.name #if type(fm) == VolumeViewer.volume.Volume : # self.FromMap ( fm ) if hasattr ( self.mod, "COM" ) : self.COM = self.mod.COM self.comp = chimera.Point ( self.COM[0], self.COM[1], self.COM[2] ) self.comv = self.comp.toVector () def FromMap ( self ) : if hasattr ( self, "COM" ) : #print " ** already have COM" return self import axes self.pts, self.weights = axes.map_points ( self.mod ) if len(self.pts) == 0 : self.pts, self.weights = axes.map_points ( self.mod, False ) #print len(self.pts) self.COM, self.U, self.S, self.V = prAxes ( self.pts ) #print " - " + self.mod.name + ", COM : ", self.COM self.comp = chimera.Point ( self.COM[0], self.COM[1], self.COM[2] ) self.comv = self.comp.toVector () self.comp_wc = self.mod.openState.xform.apply ( self.comp ) self.COMWC = [self.comp_wc[0], self.comp_wc[1], self.comp_wc[2]] #print self.comp_wc.data() return self def FromMol (self) : #if hasattr ( self, "COM" ) : # return sel = chimera.selection.OSLSelection ( "#%d" % self.mod.id ) atoms = sel.atoms() #print self.mod.name, " - ", len(atoms), "atoms" from _multiscale import get_atom_coordinates from axes import prAxes points = get_atom_coordinates ( atoms, transformed = False ) self.COM, self.U, self.S, self.V = prAxes ( points ) self.comp = chimera.Point ( self.COM[0], self.COM[1], self.COM[2] ) self.comv = self.comp.toVector () # print " - com: ", self.comp return self def FromSurf (self) : print self.mod.name, " - from surf" self.COM = numpy.array ( [ 0,0,0 ], numpy.float32 ) N = 0.0; rad = 0.0; for sp in self.mod.surfacePieces : for p in sp.geometry[0] : self.COM = self.COM + p; N = N + 1.0; r = numpy.sqrt ( (p**2).sum() ) if r > rad : rad = r self.COM = self.COM / N; self.comp = chimera.Point ( self.COM[0], self.COM[1], self.COM[2] ) self.comv = self.comp.toVector () # print " - com: ", self.comp return self def Rotate ( self, deg=5.0, center = None, axis = [0,0,1] ) : if ( center == None ) : center = self.COM rxf = chimera.Xform.rotation ( chimera.Vector(axis[0],axis[1],axis[2]), deg ) txf0 = chimera.Xform.translation ( chimera.Vector(-center[0],-center[1],-center[2]) ) txf = chimera.Xform.translation ( chimera.Vector(center[0],center[1],center[2]) ) self.xf.multiply ( txf ) self.xf.multiply ( rxf ) self.xf.multiply ( txf0 ) self.mod.openState.xform = self.xf def Show ( self ) : self.mod.display = True def Hide ( self ) : self.mod.display = False def SetSurfThr ( self, thr ) : if self.mod.display == False : return if type ( self.mod ) != VolumeViewer.volume.Volume : return self.mod.region = ( self.mod.region[0], self.mod.region[1], [1,1,1] ) self.mod.surface_levels[0] = thr ro = VolumeViewer.volume.Rendering_Options() ro.smoothing_factor = .3 ro.smoothing_iterations = 2 ro.surface_smoothing = True self.mod.update_surface ( False, ro ) for sp in self.mod.surfacePieces : v, t = sp.geometry if len(v) == 8 and len(t) == 12 : sp.display = False def SetSurfColor ( self, r, g, b, a ) : for sp in self.mod.surfacePieces : v, t = sp.geometry if len(v) == 8 and len(t) == 12 : sp.display = False else : sp.color = ( r, g, b, a ) def SetAlpha ( self, a ) : import Segger import Segger.regions if type(self.mod) == Segger.regions.Segmentation : print "seg set a" for r in self.mod.regions : if r.has_surface(): cr,cg,cb = r.surface_piece.color[:3] #r.color[:3] r.surface_piece.color = ( cr, cg, cb, a ) elif type(self.mod) == VolumeViewer.volume.Volume : for sp in self.mod.surfacePieces : v, t = sp.geometry if len(v) == 8 and len(t) == 12 : sp.display = False else : c = sp.color sp.color = ( c[0], c[1], c[2], a ) if hasattr ( sp, "vertexColors" ) and sp.vertexColors != None : vcolors = [] for vc in sp.vertexColors : vcolors.append ( (vc[0], vc[1], vc[2], a) ) sp.vertexColors = vcolors def SetXform ( self, f ) : from quaternion import Quaternion t0 = self.xf0.getTranslation () q0 = Quaternion () q0.fromXform ( self.xf0 ) t1 = self.xf.getTranslation () q1 = Quaternion () q1.fromXform ( self.xf ) # linear interpolation f1, f2 = (1.0-f), f # cubic interpolation f1, f2 = 2.0*f*f*f-3.0*f*f+1.0, 3*f*f-2*f*f*f pos = t0 * f1 + t1 * f2 s = q0.s * f1 + q1.s * f2 v = q0.v * f1 + q1.v * f2 Q = Quaternion ( s, v ) Q.normalize() xf = Q.Xform () # print "- com pos: ", pos #tr0 = chimera.Xform.translation ( -sm.COM ) tr = chimera.Xform.translation ( pos ) #xf.multiply ( tr0 ) xf.premultiply ( tr ) #if rxf1.ref_mod : # xf.premultiply ( rxf1.ref_mod.openState.xform ) self.mod.openState.xform = xf # --------------------------------------------------------------------------------------------------------- def close_animate_dialog (): from chimera import dialogs d = dialogs.find ( "segger_animate", create=False ) if d : print " - found dialog" d.toplevel_widget.update_idletasks () d.Close() d.toplevel_widget.update_idletasks () else : print " - did not find dialog" def show_dialog (): from chimera import dialogs dialogs.register ("segger_animate", Segger_Animate_Dialog, replace = True) d = dialogs.find ( "segger_animate", create=True ) # Avoid transient dialog resizing when created and mapped for first time. d.toplevel_widget.update_idletasks () d.enter() return d def getMod ( name ) : for mol in chimera.openModels.list () : if mol.name == name : return mol return None def getModById ( id ) : for mol in chimera.openModels.list () : try : mol.id except : continue if mol.id == id : return mol return None def visMods () : for mol in chimera.openModels.list () : try : mol.shown() except : continue if mol.shown() == True : print mol.id, " ", mol.name return None # ----------------------------------------------------------------------------- # def set_Xf_QInterp ( sm, state1, state2, ti ) : ti_low = state1.ti ti_high = state2.ti rxf1 = state1.rxf rxf2 = state2.rxf f = float(ti - ti_low) / float ( ti_high - ti_low ) # linar interpolation f1, f2 = (1.0-f), f f1, f2 = 2.0*f*f*f-3.0*f*f+1.0, 3*f*f-2*f*f*f pos = rxf1.pos * f1 + rxf2.pos * f2 s = rxf1.Q.s * f1 + rxf2.Q.s * f2 v = rxf1.Q.v * f1 + rxf2.Q.v * f2 Q = Quaternion ( s, v ) Q.normalize() xf = Q.Xform () # print "- com pos: ", pos tr0 = chimera.Xform.translation ( -sm.COM ) tr = chimera.Xform.translation ( pos ) xf.multiply ( tr0 ) xf.premultiply ( tr ) if rxf1.ref_mod : xf.premultiply ( rxf1.ref_mod.openState.xform ) sm.openState.xform = xf def ColorMapsByContact (dmap1, dmap2, d = None) : print "%s -- %s" % (dmap1.name, dmap2.name) from _multiscale import get_atom_coordinates from _contour import affine_transform_vertices as transform_vertices from CGLutil.AdaptiveTree import AdaptiveTree from Matrix import xform_matrix, multiply_matrices, chimera_xform, identity_matrix, invert_matrix, shift_and_angle nmat = dmap1.data.full_matrix () nmatm = numpy.where ( nmat > dmap1.surface_levels[0], numpy.ones_like(nmat), numpy.zeros_like(nmat) ) nz = nmatm.nonzero () nzpts = numpy.array ( [nz[2], nz[1], nz[0]] ).transpose().astype( numpy.float32 ) transform_vertices ( nzpts, dmap1.data.ijk_to_xyz_transform ) transform_vertices ( nzpts, xform_matrix ( dmap1.openState.xform ) ) transform_vertices ( nzpts, xform_matrix ( dmap2.openState.xform.inverse() ) ) searchTreeAll = AdaptiveTree (nzpts.tolist(), nzpts.tolist(), 5.0) inClr = chimera.MaterialColor ( .1, .1, .1, 1 ) outClr = chimera.MaterialColor ( .9, .2, .2, 1 ) ccolor = (.8,.4,.4,1) if d == None : d = dmap1.data.step[0] * 1.5 print " - using distance", d for sp in dmap1.surfacePieces : v, t = sp.geometry if len(v) == 8 and len(t) == 12 : sp.display = False continue ccolor = sp.color for sp in dmap2.surfacePieces : v, t = sp.geometry if len(v) == 8 and len(t) == 12 : sp.display = False continue #print " - %.0f x1000 verts" % (len(v)/1000) ocolor = sp.color vcolors = [] for vi, vert in enumerate ( v ) : nearby = searchTreeAll.searchTree ( vert, d ) if len(nearby) == 0 : if hasattr ( sp, "vertexColors" ) and sp.vertexColors != None : vcolors.append ( sp.vertexColors[vi] ) else : vcolors.append ( ocolor ) else : vcolors.append ( ccolor ) cldist = 1e9 if 0 : for n in nearby : print n np = chimera.Point ( n[0], n[1], n[2] ) nv = chimera.Point ( vert[0], vert[1], vert[2] ) dist = (np - nv).length if dist < cldist : cldist = dist if (vi+1) % 1000 == 0 : print "%d," % ((vi+1)/1000), sp.vertexColors = vcolors print ""