Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#4997 closed enhancement (not a bug)

Graphics slow showing huge structure

Reported by: p.shah.lab@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Performance Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Linux-4.18.0-305.3.1.el8.x86_64-x86_64-with-glibc2.14
ChimeraX Version: 1.2.5 (2021-05-24 04:13:57 UTC)
Description
Program gets sluggish when manipulating the entire biological assemly of 3kz4. This is expected as the model is HUGE when symmetry expanded to render the entire viral capsid. I was attempting to fit the entire model into the map as I had indications that the map appeared to be smaller than the model and getting that size comparison with a single asymmetric unit wouldnt have been possible. 

Furthermore, I have attached my franken PDB which contains the BIOMT, HELIX and SHEET records along with the CA atoms.
which are renderd well in Chimera but not so in this version of ChimeraX. I am prepared to admit that perhaps the pdb is incorrect and this may not necessarily be bug in ChimeraX. In this case, I would be happy to hear from you suggestions regarding how best to set up the PDB so that I can work with the minimal amount of information and prevent sluggishness.

Best,
Pranav

Log:
UCSF ChimeraX version: 1.2.5 (2021-05-24)  
© 2016-2021 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open /home/pshah/Downloads/ChimeraX/PDB/4v7q.cif format mmcif

4v7q.cif title:  
Atomic model of an infectious rotavirus particle [more info...]  
  
Chain information for 4v7q.cif #1  
---  
Chain | Description  
AA AB | Core scaffold protein  
AC AD AE AF AG AH AI AJ AK AL AM AN AO | Intermediate capsid protein VP6  
BA BF BG BH BI BJ BK BL BM BN BO BP BQ | Outer layer protein VP7  
BX BY BZ | Outer capsid protein VP4  
  
Non-standard residues in 4v7q.cif #1  
---  
NAG — 2-acetamido-2-deoxy-beta-D-glucopyranose  
ZN — zinc ion  
  
4v7q.cif mmCIF Assemblies  
---  
1| complete icosahedral assembly  
  

> help save

> save /home/pshah/Desktop/foo format pdb #1

Cannot determine format for '/home/pshah/Desktop/foo'  

> save /home/pshah/Desktop/foo.pdb #1




OpenGL version: 3.3.0 NVIDIA 470.57.02
OpenGL renderer: NVIDIA GeForce RTX 2080/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: Dell Inc.
Model: OptiPlex 7071
OS: CentOS Linux 8 
Architecture: 64bit ELF
Virutal Machine: none
CPU: 8 Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz
Cache Size: 12288 KB
Memory:
	              total        used        free      shared  buff/cache   available
	Mem:          125Gi       3.1Gi        64Gi       135Mi        57Gi       121Gi
	Swap:         4.0Gi          0B       4.0Gi

Graphics:
	01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU104 [GeForce RTX 2080] [10de:1e82] (rev a1)	
	Subsystem: Dell Device [1028:372c]	
	Kernel driver in use: nvidia
Locale: ('en_US', 'UTF-8')
PyQt5 5.15.2, Qt 5.15.2
Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    Babel: 2.9.1
    backcall: 0.2.0
    blockdiag: 2.0.1
    certifi: 2020.12.5
    cftime: 1.5.0
    chardet: 3.0.4
    ChimeraX-AddCharge: 1.0.1
    ChimeraX-AddH: 2.1.6
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.13.2
    ChimeraX-AtomicLibrary: 3.1.3
    ChimeraX-AtomSearch: 2.0
    ChimeraX-AtomSearchLibrary: 1.0
    ChimeraX-AxesPlanes: 2.0
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 1.1
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.5.2
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.1
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.1
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.2.1
    ChimeraX-CommandLine: 1.1.4
    ChimeraX-ConnectStructure: 2.0
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.2.5
    ChimeraX-CoreFormats: 1.0
    ChimeraX-coulombic: 1.1.1
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.1
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1.3
    ChimeraX-DistUI: 1.0
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.1
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.0
    ChimeraX-Hbonds: 2.1
    ChimeraX-Help: 1.1
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.0
    ChimeraX-ImageFormats: 1.1
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-Label: 1.0
    ChimeraX-LinuxSupport: 1.0
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.2
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.0.2
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.0
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 1.2.1
    ChimeraX-MDcrds: 2.2
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.3
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.0.1
    ChimeraX-ModelPanel: 1.0.1
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0.1
    ChimeraX-OpenCommand: 1.5
    ChimeraX-PDB: 2.4.1
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.1
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.0.1
    ChimeraX-PubChem: 2.0.1
    ChimeraX-ReadPbonds: 1.0
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.4
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SeqView: 2.3
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.0
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.0.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.3.1
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-Struts: 1.0
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.0.1
    ChimeraX-ToolshedUtils: 1.2
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.7.6
    ChimeraX-uniprot: 2.1
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0
    ChimeraX-WebServices: 1.0
    ChimeraX-Zone: 1.0
    colorama: 0.4.3
    comtypes: 1.1.7
    cxservices: 1.0
    cycler: 0.10.0
    Cython: 0.29.21
    decorator: 5.0.9
    distlib: 0.3.1
    distro: 1.5.0
    docutils: 0.16
    filelock: 3.0.12
    funcparserlib: 0.3.6
    grako: 3.16.5
    h5py: 2.10.0
    html2text: 2020.1.16
    idna: 2.10
    ihm: 0.17
    imagecodecs: 2020.5.30
    imagesize: 1.2.0
    ipykernel: 5.3.4
    ipython: 7.18.1
    ipython-genutils: 0.2.0
    jedi: 0.17.2
    Jinja2: 2.11.2
    jupyter-client: 6.1.7
    jupyter-core: 4.7.1
    kiwisolver: 1.3.1
    line-profiler: 2.1.2
    lxml: 4.6.2
    lz4: 3.1.0
    MarkupSafe: 2.0.1
    matplotlib: 3.3.2
    msgpack: 1.0.0
    netCDF4: 1.5.4
    networkx: 2.5
    numexpr: 2.7.3
    numpy: 1.19.2
    numpydoc: 1.1.0
    openvr: 1.14.1501
    packaging: 20.9
    ParmEd: 3.2.0
    parso: 0.7.1
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 7.2.0
    pip: 21.0.1
    pkginfo: 1.5.0.1
    prompt-toolkit: 3.0.18
    psutil: 5.7.2
    ptyprocess: 0.7.0
    pycollada: 0.7.1
    pydicom: 2.0.0
    Pygments: 2.7.1
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 2.4.7
    PyQt5-commercial: 5.15.2
    PyQt5-sip: 12.8.1
    PyQtWebEngine-commercial: 5.15.2
    python-dateutil: 2.8.1
    pytz: 2021.1
    pyzmq: 22.0.3
    qtconsole: 4.7.7
    QtPy: 1.9.0
    RandomWords: 0.3.0
    requests: 2.24.0
    scipy: 1.5.2
    setuptools: 50.3.2
    sfftk-rw: 0.6.7.dev1
    six: 1.15.0
    snowballstemmer: 2.1.0
    sortedcontainers: 2.2.2
    Sphinx: 3.2.1
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 2.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    suds-jurko: 0.6
    tables: 3.6.1
    tifffile: 2020.9.3
    tinyarray: 1.2.3
    tornado: 6.1
    traitlets: 5.0.5
    urllib3: 1.25.11
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.36.0
    wheel-filename: 1.2.0
File attachment: 3kz4_CA_only.pdb

3kz4_CA_only.pdb

Attachments (1)

3kz4_CA_only.pdb (585.3 KB ) - added by p.shah.lab@… 4 years ago.
Added by email2trac

Download all attachments as: .zip

Change History (11)

by p.shah.lab@…, 4 years ago

Attachment: 3kz4_CA_only.pdb added

Added by email2trac

comment:1 by pett, 4 years ago

Component: UnassignedPerformance
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionGraphics slow showing huge structure

Reported by Pranav Shah

comment:2 by Tom Goddard, 4 years ago

Hi Pranav,

The 3kz4 rotavirus asymmetric unit is 54000 atoms so the full capsid is 60 times bigger or 3.24 million atoms. That is a lot. But using

open 3kz4
light simple
sym #1 assembly 1

it renders at about 30 frames per second on my MacBook Pro laptop (Radeon Pro Vega 20 graphics) (Can measure frame rate with command "graphics rate true" and turn off with "graphics rate false"). Even with full lighting it was getting 10 frames per second. Those number seem a bit high, maybe by a factor of 2 or 3 compared to what it feels like when I was rotating the model. I am puzzled why your much more powerful RTX 2080 is slow with this.

The symmetry command as used above does not copy the 54000 atoms it only renders them in 60 locations. If you make copies (sym #1 assembly #1 copies true) then you really get 3 million atoms. That also rendered at 30 frames per second, and really felt like 30 frames per second.

So I am a bit at a loss at why you are reporting slow performance. Maybe your RTX 2080 driver has a problem, but ChimeraX shows in this bug report that it is using the Nvidia driver

OpenGL version: 3.3.0 NVIDIA 470.57.02
OpenGL renderer: NVIDIA GeForce RTX 2080/PCIe/SSE2

I see this is a very recent driver July 19, 2021. I don't have an RTX 2080 to test on.

Tom

comment:3 by Tom Goddard, 4 years ago

ChimeraX is having some trouble with your CA only model. It somehow doesn't see any of the CA atoms connected as polymers. Eric is looking this in bug report #4991. It seems like a ChimeraX bug, or it is a problem with the PDB file.

When I make a CA only 3kz4 in mmCIF format it works correctly. I would suggest using mmCIF.

open 3kz4
delete ~@CA
save 3kz4_CA_only.cif
close
open 3kz4_CA_only.cif

Possibly our PDB file reader or writer has a problem, and Eric will get to the bottom of that and fix it.

comment:4 by Tom Goddard, 4 years ago

Hi Tom,

Apologies for the delay in reply. To clarify, I was moving the
symmetry expanded 4v7q (not 3kz4 as previously stated) into its
corresponding map. It wasnt entirely surprising that the system got
sluggish, given the total number of atoms. Hence, the notion of using
the CA trace to compare sizes.
Many thanks for looking into this for me.
Best,
Pranav
--
Pranav Shah
Postdoctoral Research Fellow.

Division of Structural Biology,
Wellcome Trust Centre for Human Genetics,
University of Oxford,
Roosevelt Drive, Oxford OX3 7BN,
UK

comment:5 by Tom Goddard, 4 years ago

Type: defectenhancement

Ok, 4v7q is about 100,000 atoms so showing all 60 copies is 6 million atoms. That is a lot to render. But my Mac laptop does it at better than 10 frames per second with simple lighting, so I think your RTX 2080 should be able to move it smoothly since it is much more powerful.

Your RTX 2080 should have similar performance to the GTX 1080 Ti I have in a Windows machine. 4v7q showing full capsid (sym #1 assem 1) with simple lighting (light simple) renders at a full 60 frames per second for me with the 1080 Ti. If I try to move it around relative to map EMDB 5199 using move models mouse mode, it is also 60 frames per second, but since the 60 copies are being rendered by applying symmetry and my move only moves the original copy the capsid shell becomes out of shape. If I make 60 copies (sym #1 assem 1 copies true), again all move at 60 frames per second, but if I select all 60 and use "move models" mouse mode then it slows to about 2 frames per second. I am not sure why that is. Probably it could be improved so it is 60 frames per second. Maybe it is doing a slow recomputation of the bounding box as each of the 60 models moves. Hard to say without further debugging. This is such an obscure use I will not have time to optimize it unless a convincing case is made that it is needed. There are many other improvements that effect hundreds or thousands of users that need attention.

in reply to:  7 comment:6 by p.shah.lab@…, 4 years ago

Indeed! I did not expect a fix for this, as mentioned earlier,
decimating the PDB to CA's only would be more than enough to solve my
problem.
Thanks again for taking a look!
Best,
Pranav
--
Pranav Shah
Postdoctoral Research Fellow.

Division of Structural Biology,
Wellcome Trust Centre for Human Genetics,
University of Oxford,
Roosevelt Drive, Oxford OX3 7BN,
UK
On Tue, Aug 10, 2021 at 11:11 PM ChimeraX
<ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:

comment:7 by Tom Goddard, 4 years ago

Resolution: not a bug
Status: assignedclosed

Ok. The temporary solution for saving the CA model is to use mmCIF format, not PDB format. Eric will figure out the PDB file reader problem you encountered with the all CA model, described in the following ticket

https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/4991

The PDB is going to eliminate the PDB format, and it has too many problems with large structures (limited number of atoms and chains) so I would suggest using mmCIF always when possible. Of course some old software can only handle PDB format, but such software is going to be more and more trouble as PDB starts releasing new structures only in mmCIF format.

in reply to:  9 comment:8 by p.shah.lab@…, 4 years ago

Yes, thats how I managed to get it to work in the end.
On the note of mmcif and I know this is offtopic but - would it be
possible to import chimeraX libraries to manipulate these file types
in an ipython env?
Best,
Pranav
--
Pranav Shah
Postdoctoral Research Fellow.

Division of Structural Biology,
Wellcome Trust Centre for Human Genetics,
University of Oxford,
Roosevelt Drive, Oxford OX3 7BN,
UK

On Wed, Aug 11, 2021 at 12:11 AM ChimeraX
<ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:

in reply to:  10 ; comment:9 by goddard@…, 4 years ago

No you can't currently use ChimeraX Python e.g. reading mmCIF files in your own Python environment.  ChimeraX is only distributed as an application which includes its own Python.  The ChimeraX Python shell, menu Tools /  General / Shell is IPython/Jupyter.  But I guess you mean using ChimeraX in other IPython environments e.g. in a web browser.  We just got some funding to make a PyPi ChimeraX Python package which will be a module that allows using the capabilities in your own Python rather than running the ChimeraX application.  But that is a 2 year grant that has not started yet and so it is probably at least a year away from being usable.


in reply to:  11 ; comment:10 by goddard@…, 4 years ago

Yes, ChimeraX has many capabilities that can be useful in scripts to analyze structures and EM maps.  There is a ChimeraX web site that gives examples of Python ChimeraX scripts that currently have to be run in the ChimeraX application.

	https://rbvi.github.io/chimerax-recipes/


Note: See TracTickets for help on using tickets.