I'm currently trying to do some visualization on large structures (in this case, 3iyw in its biological assembly).

Exporting the entire isosurface (created using Jason's trick) is not a problem.

However, exporting 1 surface per chain ID (7 chain ID's in total, i.e. 6 surfaces) "works" in that I get my 7 .obj or .wrl files. The problem is that they seem to have undergone a translation about x, y, and/or z (can't make out a pattern).  

I copied my script over below.  I've uploaded a sample image (outside of Pymol) at - the red represents 60 copies of the same chain and clearly it is translated.  All of them appear to be shifted and overall it breaks the symmetry and accuracy.

I'm hoping that I might get some tips or leads in how to resolve this.  Also, I'm imported the individual chain exported surfaces into multiple non-Pymol packages and all have the same issue.  If I do not delete the chains after every export, I can of course export all the chains, but I end up with a single piece of geometry, which is not what I need.

Many thanks,

JP Cartailler


# 2012/08/21
# Generate low-resolution surfaces and export for external rendering
# Ref. for surface generation -
# Ref. for get/set_view -
# PDB Ref.

# Load a PDB file (sync at the end, to make sure
# the file finishes to load prior to other commands executing
load Z:\some_path\3iyw.pdb, sync

# show all states
# 3iyw has 60 states
set all_states, on

# Create objects for each chain
select A, chain A
select B, chain B
select C, chain C
select H, chain H
select K, chain K
select L, chain L
select M, chain M

# delete original object, to save memory
delete 3iyw_assembly

# hide everything
hide all

# set the view coordinates, so that
# the scene doesn't shift for each chain (don't think
# this actually works)
set_view (\
     0.200763375,   -0.687440515,   -0.697939515,\
    -0.230375409,    0.659335077,   -0.715684593,\
     0.952166438,    0.304471344,   -0.025999010,\
     0.000000000,    0.000000000, -1791.385009766,\
    -5.000000000,   -5.000000000,   -5.000000000,\
   734.342590332, 2848.427490234,    0.000000000 )

# create a pseudo-fcalc map (a 3D volumetric scalar field)
# set the B-factors nice and high for smoothness
alter all, b=40

# ~10 A map resolution
set gaussian_resolution, 10

# TODO - create array and loop through the following
# 1. create new ~10 A map spacing with a 10 A surrounding buffer
# 2. create surface based on map
# 3. save the surface
# 4./5. cleanup

map_new mapA, gaussian, 10, A, 10
isosurface surfA, mapA, 1.0
save chainA.obj
delete mapA
delete surfA

map_new mapB, gaussian, 10, B, 10
isosurface surfB, mapB, 1.0
save chainB.obj
delete mapB
delete surfB

map_new mapC, gaussian, 10, C, 10
isosurface surfC, mapC, 1.0
save chainC.obj
delete mapC
delete surfC

map_new mapH, gaussian, 10, H, 10
isosurface surfH, mapH, 1.0
save chainH.obj
delete mapH
delete surfH

map_new mapK, gaussian, 10, K, 10
isosurface surfK, mapK, 1.0
save chainK.obj
delete mapK
delete surfK

map_new mapL, gaussian, 10, L, 10
isosurface surfL, mapL, 1.0
save chainL.obj
delete mapL
delete surfL

map_new mapM, gaussian, 10, M, 10
isosurface surfM, mapM, 1.0
save chainM.obj
delete mapM
delete surfM