Opened 5 years ago

Last modified 5 years ago

#3126 assigned defect

Nucleotide stub takes 10 minutes to display for ribosome

Reported by: goddard@… Owned by: Greg Couch
Priority: normal Milestone:
Component: Performance Version:
Keywords: Cc: pett
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Darwin-19.4.0-x86_64-i386-64bit
ChimeraX Version: 0.94 (2020-04-16)
Description
Took approximately 20 minutes to show nucleotide stubs for 4v9d.  This is nearly as bad as a crash since no one will wait 20 minutes.  Since a primary strength of ChimeraX is fast handling of large structures and ribosome structures are very common this is a serious problem.  If the code cannot be optimized it might be best to have nucleotides show a warning if requested on more than 1000 residues and not change the style unless a "noWarn true" option is given.

Log:
UCSF ChimeraX version: 0.94.dev202004160103 (2020-04-16)  
© 2016-2020 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open 4v9d

Summary of feedback from opening 4v9d fetched from pdb  
---  
note | Fetching compressed mmCIF 4v9d from
http://files.rcsb.org/download/4v9d.cif  
  
4v9d title:  
Structures of the bacterial ribosome in classical and hybrid states of tRNA
binding [more info...]  
  
Chain information for 4v9d #1  
---  
Chain | Description  
AA BA | 16S rRNA  
AB BB | 30S ribosomal protein S2  
AC BC | 30S ribosomal protein S3  
AD BD | 30S ribosomal protein S4  
AE BE | 30S ribosomal protein S5  
AF BF | 30S ribosomal protein S6  
AG BG | 30S ribosomal protein S7  
AH BH | 30S ribosomal protein S8  
AI BI | 30S ribosomal protein S9  
AJ BJ | 30S ribosomal protein S10  
AK BK | 30S ribosomal protein S11  
AL BL | 30S ribosomal protein S12  
AM BM | 30S ribosomal protein S13  
AN BN | 30S ribosomal protein S14  
AO BO | 30S ribosomal protein S15  
AP BP | 30S ribosomal protein S16  
AQ BQ | 30S ribosomal protein S17  
AR BR | 30S ribosomal protein S18  
AS BS | 30S ribosomal protein S19  
AT BT | 30S ribosomal protein S20  
AU BU | 30S ribosomal protein S21  
AV BV | phenylalanine specific transfer RNA  
AX BX | messenger RNA  
AY | ribosome recycling factor  
C0 D0 | 50S ribosomal protein L32  
C1 D1 | 50S ribosomal protein L33  
C2 D2 | 50S ribosomal protein L34  
C3 D3 | 50S ribosomal protein L35  
C4 D4 | 50S ribosomal protein L36  
CA DA | 23S rRNA  
CB | 5S rRNA  
CC DC | 50S ribosomal protein L2  
CD DD | 50S ribosomal protein L3  
CE DE | 50S ribosomal protein L4  
CF DF | 50S ribosomal protein L5  
CG DG | 50S ribosomal protein L6  
CH DH | 50S ribosomal protein L9  
CI DI | 50S ribosomal protein L11  
CJ DJ | 50S ribosomal protein L13  
CK DK | 50S ribosomal protein L14  
CL DL | 50S ribosomal protein L15  
CM DM | 50S ribosomal protein L16  
CN DN | 50S ribosomal protein L17  
CO DO | 50S ribosomal protein L18  
CP DP | 50S ribosomal protein L19  
CQ DQ | 50S ribosomal protein L20  
CR DR | 50S ribosomal protein L21  
CS DS | 50S ribosomal protein L22  
CT DT | 50S ribosomal protein L23  
CU DU | 50S ribosomal protein L24  
CV DV | 50S ribosomal protein L25  
CW | 50S ribosomal protein L27  
CX DX | 50S ribosomal protein L28  
CY DY | 50S ribosomal protein L29  
CZ DZ | 50S ribosomal protein L30  
DB | 5S rRNA  
DW | 50S ribosomal protein L27  
  
Non-standard residues in 4v9d #1  
---  
MG — magnesium ion  
ZN — zinc ion  
  
4v9d mmCIF Assemblies  
---  
1| author_defined_assembly  
2| author_defined_assembly  
  
  

> hide atoms

> show cartoons

> nucleotides slab

> style nucleic stick

Changed 199371 atom styles  

> nucleotides stubs

> show atoms




OpenGL version: 4.1 ATI-3.8.24
OpenGL renderer: AMD Radeon Pro Vega 20 OpenGL Engine
OpenGL vendor: ATI Technologies Inc.

Change History (8)

comment:1 by Tom Goddard, 5 years ago

Component: UnassignedPerformance
Owner: set to Greg Couch
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionNucleotide stub takes 20 minutes to display for ribosome

comment:2 by pett, 5 years ago

Cc: pett added

I know nucleotides relies on an H-bonds computation to do it's work, so it will probably never be super fast. Nonetheless, the H-bonds computation takes 36.5 seconds on this structure, so there's still a lot of room for improvement!

comment:3 by pett, 5 years ago

Also, if the H-bonds calculation was informed that it should only be finding base-pair H-bonds, it could be seriously optimized for that case. Cutting down on the the other 19.5 minutes that nucleotides is taking would probably be the first priority though.

comment:4 by Tom Goddard, 5 years ago

Summary: Nucleotide stub takes 20 minutes to display for ribosomeNucleotide stub takes 10 minutes to display for ribosome

I tested again and it took 9.5 minutes not 20 minutes. When I first reported the bug I relied on the CPU time of ChimeraX to get 20 minutes, but interestingly it reports 300% CPU utilization when making the stub depiction, not sure how that is parallelized.

Still takes so long people will probably just kill ChimeraX having no idea when it might unhang itself.

comment:5 by Greg Couch, 5 years ago

Unlike Chimera, ChimeraX's nucleotides never does H-bond calculations. It uses existing H-bonds to figure out ladders.

comment:6 by Greg Couch, 5 years ago

Partially fixed. Switched to using the add_shapes API, and went from 2148 to 90 seconds for showing stubs for a 24X speed up. Oddly, Windows shows the CPU utilization as ~3.5% in both cases.

comment:7 by Tom Goddard, 5 years ago

With your new code it now takes 28 seconds to show nucleotide stubs on my machine. But the nucleotide display is unusable since now every change in display takes 28 seconds, "hide protein", "show cartoon", "hide /BA", .... all these take under a second without stubs shown and 28 seconds with stubs shown.

This is especially bad because the user will probably not realize that everything is slow because of nucleotide display, so they won't know how to get it working fast (turn off nucleotides). If this can not be improved in the short term (months) then perhaps the nucleotides command can log a warning if nucleotides are shown for more than 1000 residues, or whatever the number it can handle without degrading performance by more than factor of 2. "Warning: nucleotide display on 5345 residues will make changing what is shown very slow".

comment:8 by Tom Goddard, 5 years ago

You say Windows shows 3.5% CPU utilization when computing nucleotides. On macOS it shows 300% CPU utilization.

Note: See TracTickets for help on using tickets.