[Chimera-users] Using marker files to place oriented density maps inside a tomogram
Daniel Castaño Díez
daniel.castano at unibas.ch
Fri Nov 16 05:39:40 PST 2012
Hi Tom,
thanks! it worked nicely!
best,
Daniel
> Hi Daniel,
>
> Probably you can modify your script and make Chimera open the copies
> much faster. The python script should also achieve that. The trick
> with your command script is that between each command Chimera draws a
> frame and may update the volume dialog histograms. One way to avoid
> this is put all the commands on one line separated by semicolons.
> Maybe another better method is have one open command and one transform
> setting command
>
> open template.em template.em template.em ... (repeat for as many
> copies as you need)
> matrixset transforms.txt
>
> I believe the matrixset command can have the positions for as many
> models as you want with the model id number specified before the
> transform. See the Chimera manual or try matrixget to write an
> example file with several models being displayed to see the precise
> format when you have multiple transforms.
>
> A Python script could be faster still because it wouldn't need to
> open the same map file over and over. It could create all the map
> copies from the first. As an example making 100 translated copies of
> an open 100**3 volume took 3 seconds with the following Python
>
> from VolumeViewer import active_volume
> v = active_volume()
> from chimera import Xform
> for i in range(100):
> c = v.copy()
> c.openState.localXform(Xform.translation(i*20,0,0))
> c.show()
>
>
> Tom
>
>
>> Hi Tom,
>>
>>
>> Yes, both methods that you describe work nicely. In particular, I was
>> not aware of the possibility of changing the level of a set of models
>> with a single command line operation: that does help a lot.
>>
>> The only actual annoyance that remains in my implementation for the
>> manipulation of sets of volumes is the loading of the volumes?. I
>> suspect the way I do it is too rudimentary, as I just open Chimera
>> passing as argument a .cmd command file that loads the same file
>> again and again, placing it each time in a different location, i.e:
>>
>> open 0 template.em
>> matrixset transform_0.cmd
>> open 1 template.em
>> matrixset transform_1.cmd
>>
>> ? and so on for hundreds of models, so that the user basically sees
>> the Volume Viewer getting updated with a new model and then a new
>> one for several minutes. I guess with the .py script that you send
>> me I will be able to load the volumes in a less messy manner than
>> this one.
>>
>> Thanks for all the info!
>> Daniel
>>
>>
>>> Hi Daniel,
>>>
>>> I see. You'd like to control the contour level, color,
>>> surface/mesh style, step size... of all the copies as if they were
>>> one model instead of 100 different models, each a copy of the same
>>> map. For making hundreds of copies of an atomic model, the
>>> multiscale dialog in Chimera does this using a single model. But
>>> that doesn't currently work with maps. One disadvantage of having a
>>> single model for all the copies of a map is that the maps will all
>>> have to have the same color, same step size, same contour level
>>> because all those properties are stored with the model. Maybe that
>>> restriction is fine for your use. I would like to make that
>>> possible by allowing Chimera to place identical copies of any type
>>> of model by just specifying the list of positioning matrices. The
>>> model would just remember the list of matrices for the different
>>> placements.
>>>
>>> For now using a hundred different models of the same map is
>>> workable. You can't adjust all of them at the same time with the
>>> volume dialog. But you can adjust one to figure out the contour
>>> level you like and then use one volume command to set the level for
>>> all the copies, for example, "volume #1-100 level 1.24 color yellow
>>> step 2".
>>>
>>> Another approach is to make a single map by adding your hundred
>>> placed copies on a single grid (e.g. the tomogram grid). Then you
>>> open that one map and all the copies appear. The drawback is that
>>> you may want finer grid spacing on the individual copies then you
>>> have with the tomogram, and that would make the map to large and
>>> slow to work with (and mostly empty). If you are interested in
>>> trying this approach though you can use a command like "vop add
>>> #1-100 onGrid #0" to produce such a map after placing the hundred
>>> separate models with your current script. Then save that new map
>>> and use it in the future instead of the 100 copies.
>>>
>>> Tom
>>>
>>>
>>> -------- Original Message --------
>>> Subject: Re: [Chimera-users] Using marker files to place oriented
>>> density maps inside a tomogram
>>> From: Daniel Castano Diez
>>> To: Tom Goddard
>>> Date: 11/15/12 7:12 AM
>>>> Hi Tom,
>>>>
>>>> thanks for the helpful explanation. The extension that you mention
>>>> you've been working on seems interesting. I guess that will allow
>>>> the user to change the isosurface level in one single model to
>>>> change it in all the models simultaneously, am I right? This would
>>>> solve another problem I'm having with my scripts, as they fed each
>>>> copy of the map into Chimera as a different model. So, I'm looking
>>>> forwards to trying it when it becomes available.
>>>>
>>>> best,
>>>> Daniel
>>>>
>>>>
>>>>
>>>>> Hi Daniel,
>>>>>
>>>>> You can use a Chimera marker file but that only knows how to
>>>>> place spheres. If you wanted to make use of the "map" and
>>>>> "matrix" attributes you added to the markers then that would
>>>>> require some extra Python script. That could be done -- it is
>>>>> just a different format of input from the script I sent you.
>>>>>
>>>>> If you can't display hundreds of copies of the map due to slow
>>>>> graphics then it doesn't matter how you input the data. Having
>>>>> hundreds of copies of the same map open doesn't load the map data
>>>>> more than once. So you shouldn't run out of memory. But the
>>>>> surface for each map might have a million triangles and it does
>>>>> make a separate surface copy for each copy you place in your
>>>>> tomogram. Of course you won't see the detail in a tiny map put
>>>>> into a tomogram so the solution would be to display a very coarse
>>>>> image of the map that is being placed many times in the tomogram.
>>>>> I've worked recently on making Chimera display multiple copies of
>>>>> identical objects without making copies of the surface in memory
>>>>> -- just reuse the same surface. But it is not in Chimera yet. And
>>>>> your graphics speed will still become unusable if you try to
>>>>> display too many copies with too much detail. So the main need is
>>>>> to show an appropriate low level of detail for all or most of your
>>>>> hundreds of copies.
>>>>>
>>>>> Tom
>>>>>
>>>>>
>>>>> -------- Original Message --------
>>>>> Subject: Re: [Chimera-users] Using marker files to place oriented
>>>>> density maps inside a tomogram
>>>>> From: Daniel Castano Diez
>>>>> To: Tom Goddard
>>>>> Date: 11/14/12 1:28 PM
>>>>>> Hi Tom,
>>>>>>
>>>>>> thanks for the answer. Actually I already wrote some scripts for
>>>>>> placing each different copy of the density map as an individual
>>>>>> model, but this is not practical for placing hundreds of copies
>>>>>> (as it's the case with tomograms). I will try your python script.
>>>>>>
>>>>>>
>>>>>> I was under the impression that a .cmm markerfile was a better
>>>>>> approach, as I though that one could define a marker with more
>>>>>> attributes as in the example:
>>>>>>
>>>>>> <marker id="1" x="-6.1267" y="17.44" z="-3.1338" radius="0.35217"/>
>>>>>>
>>>>>> I mean, something like:
>>>>>>
>>>>>> <marker id="1" x="-6.1267" y="17.44" z="-3.1338" map
>>>>>> ="my_map.em" matrix = "my_matrix.txt" />
>>>>>>
>>>>>> or similar with quaternions or euler angles... but I guess that
>>>>>> was wrong? That'll be a pitty, as I am interfacing Chimera with
>>>>>> the subtomogram averaging package Dynamo and the most stable way
>>>>>> seemes to be having Dynamo converting its "table" files (lists of
>>>>>> positions and angles) into .cmm files that could then be directly
>>>>>> fed into Chimera.
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>> Daniel
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Hi Daniel,
>>>>>>>
>>>>>>> Take a look at the placem.py script which can place copies of
>>>>>>> maps or molecules at specified positions.
>>>>>>>
>>>>>>> http://plato.cgl.ucsf.edu/trac/chimera/wiki/Scripts
>>>>>>>
>>>>>>> It specifies the rotation as a quaternion which is close to a
>>>>>>> rotation axis and angle description. I could show you how to
>>>>>>> adapt it to use Euler angles or a 3x3 rotation matrix if you like.
>>>>>>>
>>>>>>> Tom
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I'd like to use a Chimera marker file to place multiple copies
>>>>>>>> of a density map in different spatial positions inside a
>>>>>>>> tomogram. My input is thus a single map file a set of 3d
>>>>>>>> locations, each attached to an euler triplet (or a rotation
>>>>>>>> matrix)
>>>>>>>>
>>>>>>>> With the documentation I could find
>>>>>>>>
>>>>>>>> http://www.cgl.ucsf.edu/chimera/1.2065/docs/ContributedSoftware/volumepathtracer/volumepathtracer.html
>>>>>>>> it is explained how to place spheres without orientation in a
>>>>>>>> volume, but I was not able to figure out how to place a density
>>>>>>>> map at those locations, and also how to impart a different
>>>>>>>> orientation to the density map located at each position.
>>>>>>>>
>>>>>>>> My question is: where could I find a description of the marker
>>>>>>>> file syntax that describes this functionality?
>>>>>>>>
>>>>>>>> thanks,
>>>>>>>> Daniel
>>>>>>>>
>>>>>>>>
>>>>>>>> ----------------------------------------------------------------
>>>>>>>> This message was sent using IMP, the Internet Messaging Program.
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Chimera-users mailing list
>>>>>>>> Chimera-users at cgl.ucsf.edu
>>>>>>>> http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> ----------------------------------------------------------------
>>>>>> This message was sent using IMP, the Internet Messaging Program.
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> ----------------------------------------------------------------
>>>> This message was sent using IMP, the Internet Messaging Program.
>>>>
>>>>
>>>
>>>
>>
>>
>>
>> ----------------------------------------------------------------
>> This message was sent using IMP, the Internet Messaging Program.
>>
>>
>
More information about the Chimera-users
mailing list