Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#4358 closed defect (fixed)

mmCIF selectedOnly very slow

Reported by: Tristan Croll Owned by: Greg Couch
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-3.10.0-1127.19.1.el7.x86_64-x86_64-with-glibc2.14
ChimeraX Version: 1.2.dev202103090320 (2021-03-09 03:20:00 UTC)
Description
"save xxx.cif  selectedOnly true" (my usual go-to approach for saving a model without hydrogens for refinement) gets *really* slow for large models. For 7ajt (after adding hydrogens), running the command with everything other than hydrogen selected takes almost an hour. In the shell:

from chimerax.core.commands import run
%prun run(session, 'save test_noh.cif #1 sel t')

... yields the output below. 

         206774008 function calls (206769253 primitive calls) in 3077.020 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    31272 2584.652    0.083 2595.328    0.083 mmcif_write.py:516(atom_site_residue)
        1  356.847  356.847 3084.345 3084.345 mmcif_write.py:244(save_structure)
 21794891   30.033    0.000   71.504    0.000 ctypes_support.py:44(residue)
  5095020   15.054    0.000   19.381    0.000 mmcif.py:392(quote)
    31004   14.675    0.000   86.234    0.003 molobject.py:1135(res_map)
22006226/22006223   11.854    0.000   16.681    0.000 <frozen importlib._bootstrap>:1017(_handle_fromlist)
 21913217   11.400    0.000   16.618    0.000 <frozen importlib._bootstrap>:389(parent)
       14    9.924    0.709   10.772    0.769 utils.py:25(flattened)
 21913233    5.218    0.000    5.218    0.000 {method 'rpartition' of 'str' objects}
 32574903    4.113    0.000    4.113    0.000 {built-in method builtins.isinstance}
 24007215    3.592    0.000    3.592    0.000 {built-in method builtins.hasattr}
  2000488    2.997    0.000   12.256    0.000 molarray.py:146(__iter__)
   256180    2.822    0.000    2.822    0.000 mmcif_write.py:545(<listcomp>)
25298079/25296335    2.746    0.000    2.747    0.000 {built-in method builtins.len}
       15    1.737    0.116   21.117    1.408 mmcif.py:1028(<listcomp>)
    31378    1.663    0.000    6.435    0.000 molarray.py:150(<listcomp>)
  1705421    1.616    0.000    1.616    0.000 {chimerax.atomic.cymol.c_ptr_to_py_inst}
  1052181    1.440    0.000    1.673    0.000 molc.py:27(c_function)


Log:
> alias preview_toolshed toolshed url https://cxtoolshed-
> preview.rbvi.ucsf.edu; toolshed reload available

> alias production_toolshed toolshed url https://cxtoolshed.rbvi.ucsf.edu;
> toolshed reload available

> alias st isolde step $*

> alias aw isolde add water $*

> alias awsf isolde add water sim false

> alias al isolde add ligand $*

> alias so setattr sel atoms occupancy $*

UCSF ChimeraX version: 1.2.dev202103090320 (2021-03-09)  
© 2016-2020 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open 7ajt

Summary of feedback from opening 7ajt fetched from pdb  
---  
note | Fetching compressed mmCIF 7ajt from
http://files.rcsb.org/download/7ajt.cif  
  
7ajt title:  
Cryo-EM structure of the 90S-exosome super-complex (state Pre-A1-exosome)
[more info...]  
  
Chain information for 7ajt #1  
---  
Chain | Description  
CA CB | rRNA 2'-O-methyltransferase fibrillarin  
CD | Nucleolar protein 56  
CE | Nucleolar protein 58  
CF CG | 13 kDa ribonucleoprotein-associated protein  
CH | Ribosomal RNA-processing protein 9  
CI | U3 small nucleolar ribonucleoprotein protein IMP3  
CJ | U3 small nucleolar ribonucleoprotein protein IMP4  
CK | U3 small nucleolar RNA-associated protein MPP10  
CL | Ribosome biogenesis protein BMS1  
CM | RNA 3'-terminal phosphate cyclase-like protein  
CN | Ribosomal RNA-processing protein 7  
D2 | 5'ets RNA  
D3 | 18S rRNA  
D4 | U3 snoRNA  
DA | 40S ribosomal protein S1-A  
DE | 40S ribosomal protein S4-A  
DF | 40S ribosomal protein S5  
DG | 40S ribosomal protein S6-A  
DH | 40S ribosomal protein S7-A  
DI | 40S ribosomal protein S8-A  
DJ | 40S ribosomal protein S9-A  
DL | 40S ribosomal protein S11-A  
DN | 40S ribosomal protein S13  
DO | 40S ribosomal protein S14-A  
DQ | 40S ribosomal protein S16-A  
DS | 40S ribosomal protein S18-A  
DW | 40S ribosomal protein S22-A  
DX | 40S ribosomal protein S23-A  
DY | 40S ribosomal protein S24-A  
Db | 40S ribosomal protein S27-A  
Dc | 40S ribosomal protein S28-A  
EA | RNA  
EB | Exosome complex component RRP45  
EC | Exosome complex component SKI6  
ED | Exosome complex component RRP43  
EE | Exosome complex component RRP46  
EF | Exosome complex component RRP42  
EG | Exosome complex component MTR3  
EH | Exosome complex component RRP40  
EI | Exosome complex component RRP4  
EJ | Exosome complex component CSL4  
EK | Exosome complex exonuclease DIS3  
EN | ATP-dependent RNA helicase DOB1  
JA JB | RNA cytidine acetyltransferase  
JC | Ribosome biogenesis protein ENP2  
JF JG | Ribosomal RNA small subunit methyltransferase NEP1  
JH | Essential nuclear protein 1  
JI | rRNA biogenesis protein RRP5  
JJ | Pre-rRNA-processing protein PNO1  
JK | Protein BFR2  
JM | rRNA-processing protein FCF2  
JN | Protein FAF1  
JO | KRR1 small subunit processome component  
JP | Protein SOF1  
JQ | Regulator of rDNA transcription protein 14  
UA | Periodic tryptophan protein 2  
UB | Nucleolar complex protein 14  
UC | Something about silencing protein 10  
UD | U3 small nucleolar RNA-associated protein 4  
UE | U3 small nucleolar RNA-associated protein 5  
UF | U3 small nucleolar RNA-associated protein 6  
UG | U3 small nucleolar RNA-associated protein 7  
UH | U3 small nucleolar RNA-associated protein 8  
UI | U3 small nucleolar RNA-associated protein 9  
UJ | U3 small nucleolar RNA-associated protein 10  
UK | U3 small nucleolar RNA-associated protein 11  
UL | U3 small nucleolar RNA-associated protein 12  
UM | U3 small nucleolar RNA-associated protein 13  
UN | U3 small nucleolar RNA-associated protein 14  
UO | U3 small nucleolar RNA-associated protein 15  
UP | Bud site selection protein 21  
UQ | NET1-associated nuclear protein 1  
UR | U3 small nucleolar RNA-associated protein 18  
US | Nucleolar complex protein 4  
UT | U3 small nucleolar RNA-associated protein 20  
UU | U3 small nucleolar RNA-associated protein 21  
UV | U3 small nucleolar RNA-associated protein 22  
UX | rRNA-processing protein FCF1  
UZ | Ribosome biogenesis protein UTP30  
  
Non-standard residues in 7ajt #1  
---  
GTP — guanosine-5'-triphosphate  
MG — magnesium ion  
ZN — zinc ion  
  

> addh

Summary of feedback from adding hydrogens to 7ajt #1  
---  
warnings | Not adding hydrogens to /JA LYS 222 CB because it is missing heavy-
atom bond partners  
Not adding hydrogens to /JA GLU 223 CB because it is missing heavy-atom bond
partners  
Not adding hydrogens to /JA ASP 224 CB because it is missing heavy-atom bond
partners  
Not adding hydrogens to /JA ASP 225 CB because it is missing heavy-atom bond
partners  
Not adding hydrogens to /JA GLU 226 CB because it is missing heavy-atom bond
partners  
6406 messages similar to the above omitted  
282 atoms were skipped as donors/acceptors due to missing heavy-atom bond
partners  
notes | Termini for 7ajt (#1) chain CA determined from SEQRES records  
Termini for 7ajt (#1) chain DA determined from SEQRES records  
Termini for 7ajt (#1) chain JA determined from SEQRES records  
Termini for 7ajt (#1) chain UA determined from SEQRES records  
Termini for 7ajt (#1) chain CB determined from SEQRES records  
78 messages similar to the above omitted  
Chain-initial residues that are actual N termini: /US MET 1, /CJ MET 1, /JP
MET 1, /DG MET 1, /D2 A 1, /D3 A -7, /D4 G 1, /EA A 157, /EC MET 1, /EE MET 1,
/EF GLY -1, /EH MET 1  
Chain-initial residues that are not actual N termini: /CA ALA 80, /CA VAL 134,
/DA ALA 2, /DA GLU 238, /JA ALA 2, /JA PHE 350, /JA LEU 465, /JA GLY 611, /JA
THR 704, /UA LYS 2, /UA LYS 245, /CB LYS 85, /CB LYS 138, /JB ALA 2, /JB LEU
465, /JB GLY 611, /JB THR 704, /UB PRO 201, /UB THR 264, /UB ARG 382, /UB GLU
420, /UB PRO 585, /UB ASP 731, /UC THR 431, /UC ASP 493, /UD GLU 29, /UD ASN
413, /UD PRO 508, /UD GLU 608, /UD GLY 678, /UD HIS 731, /UE SER 3, /UE TRP
46, /UE ASP 72, /UE GLY 269, /UE THR 434, /UF SER 2, /UF ALA 264, /UF SER 296,
/UF GLU 330, /UF PRO 356, /UG LYS 13, /UG GLN 36, /UH ASP 27, /UH SER 50, /UH
ALA 85, /UH LEU 120, /UH ASP 153, /UH PRO 520, /UH PRO 548, /UH SER 631, /UH
ALA 712, /UI TRP 411, /UI HIS 429, /UJ SER 2, /UJ GLY 488, /UJ ARG 522, /UJ
LYS 1348, /UJ PHE 1369, /UJ ASN 1390, /UJ ASN 1418, /UJ SER 1434, /UJ LEU
1450, /UJ ASP 1470, /UJ SER 1492, /UJ ILE 1566, /UK ALA 2, /UK ASN 180, /UL
TYR 5, /UL PRO 38, /UL LYS 268, /UL GLU 311, /UL LEU 520, /UL SER 745, /UL ILE
786, /UM TYR 7, /UM LEU 209, /UM ASP 325, /UM PRO 378, /UM THR 486, /UM GLU
717, /UN GLN 276, /UN GLN 827, /UO SER 2, /UO LYS 353, /UP ILE 155, /UQ GLN 9,
/UQ ALA 104, /UQ ASN 166, /UQ VAL 734, /UQ ASN 818, /UQ ASN 846, /UR PRO 13,
/UR GLU 122, /UR ASN 202, /UR SER 334, /US LYS 22, /US ASN 145, /UT GLN 4, /UT
GLN 355, /UT ASN 535, /UT SER 822, /UT ASP 1191, /UT GLN 1458, /UT ARG 1501,
/UT ASN 1584, /UT GLU 1841, /UT ASN 2154, /UT GLU 2175, /UT GLN 2202, /UT GLY
2227, /UT HIS 2243, /UT ASN 2270, /UT GLU 2291, /UT ILE 2333, /UT SER 2353,
/UT GLU 2373, /UT GLU 2381, /UT GLU 2404, /UU LYS 19, /UU LEU 702, /UU GLY
812, /UV PHE 98, /UV ASP 282, /UV LEU 326, /UV PRO 453, /UV GLU 1010, /UV ALA
1128, /UX THR 7, /UX THR 41, /UZ GLY 11, /CD PRO 3, /CD LYS 370, /CE ALA 2,
/CE LYS 21, /CF PRO 4, /CG ALA 3, /CH GLU 57, /CH ASP 115, /CH PRO 394, /CI
VAL 2, /CJ GLN 72, /CK LYS 295, /CK ALA 425, /CL PRO 36, /CL LEU 353, /CL ASN
548, /CL VAL 606, /CL ASP 748, /CM LYS 7, /CN ILE 3, /CN ALA 32, /CN PRO 120,
/CN LYS 252, /JC LYS 4, /JC VAL 47, /JF PRO 29, /JF ASP 63, /JG GLN 16, /JG
ASP 63, /JH ALA 205, /JH GLY 403, /JI ALA 1457, /JJ LYS 93, /JK SER 459, /JM
SER 50, /JM ASN 101, /JM SER 171, /JN LYS 91, /JN GLY 101, /JN ASN 148, /JN
ILE 195, /JO GLU 38, /JO VAL 247, /JP ASN 168, /JQ ARG 112, /JQ PHE 178, /DE
ALA 2, /DF ASP 13, /DH PRO 4, /DI GLY 2, /DI ARG 146, /DJ PRO 2, /DL THR 6,
/DN GLY 2, /DO SER 11, /DQ ALA 3, /DS SER 2, /DS PHE 11, /DS HIS 99, /DW THR
2, /DX PRO 42, /DY SER 2, /Db VAL 2, /Dc THR 5, /D2 G 56, /D2 A 80, /D2 C 422,
/D3 A 22, /D3 C 139, /D3 A 182, /D3 U 205, /D3 U 229, /D3 U 242, /D3 G 624,
/D3 G 676, /D3 U 744, /D3 U 790, /D3 G 816, /D3 A 859, /D3 A 1025, /D3 G 1111,
/D3 A 1202, /D3 U 1258, /D3 G 1433, /D3 G 1448, /D3 C 1461, /D3 A 1524, /D3 G
1540, /D3 A 1569, /D3 A 1721, /D3 G 1768, /D4 G 111, /D4 U 137, /D4 U 197, /D4
U 245, /D4 A 263, /D4 U 304, /EB LYS 3, /ED GLU 8, /ED GLU 121, /ED LYS 206,
/ED TYR 272, /ED LEU 326, /EG GLN 4, /EG GLU 41, /EG SER 163, /EI SER 2, /EI
SER 50, /EI SER 276, /EJ PRO 8, /EJ THR 102, /EJ ASN 126, /EJ ALA 186, /EK ARG
9, /EK THR 249, /EK ASN 361, /EN MET 80, /EN GLY 392  
Chain-final residues that are actual C termini: /UC ASN 610, /UD PHE 776, /UG
GLY 554, /UH ILE 723, /UJ ASP 1769, /UK ARG 250, /UL ILE 943, /UM PHE 817, /UN
LYS 899, /UP GLY 214, /UQ THR 896, /UR TYR 594, /UU ALA 939, /UV ASP 1237, /UX
PHE 189, /CF ILE 126, /CI SER 183, /CJ LEU 290, /JJ TYR 274, /DF ARG 225, /DI
LYS 200, /DN ASN 151, /DW TYR 130, /DY ASP 135, /Db LYS 82, /Dc ARG 67, /D4 U
333, /EA U 178, /ED ILE 394, /EE VAL 223, /EF LEU 265, /EK LYS 1001, /EN LEU
1073  
Chain-final residues that are not actual C termini: /CA PRO 128, /CA LYS 326,
/DA GLY 233, /DA THR 245, /JA PHE 326, /JA ARG 431, /JA SER 595, /JA GLY 663,
/JA PHE 924, /UA ARG 223, /UA MET 856, /CB VAL 125, /CB GLY 324, /JB ARG 431,
/JB SER 595, /JB GLY 663, /JB PHE 924, /UB MET 252, /UB GLY 316, /UB LEU 414,
/UB GLU 578, /UB GLU 718, /UB ARG 806, /UC ILE 440, /UD GLY 405, /UD LEU 500,
/UD SER 600, /UD ASN 666, /UD ASN 689, /UE ARG 36, /UE ASN 67, /UE SER 262,
/UE VAL 372, /UE LEU 557, /UF ASN 207, /UF LYS 290, /UF PHE 323, /UF ASN 344,
/UF ARG 372, /UG TYR 26, /UH ALA 32, /UH GLY 83, /UH ALA 93, /UH LEU 147, /UH
VAL 358, /UH ARG 545, /UH GLY 617, /UH THR 681, /UI VAL 427, /UI ASP 515, /UJ
LEU 424, /UJ GLY 503, /UJ GLN 808, /UJ LYS 1365, /UJ SER 1388, /UJ ARG 1410,
/UJ SER 1429, /UJ ILE 1448, /UJ ILE 1465, /UJ ASN 1487, /UJ ASP 1557, /UK ALA
172, /UL ALA 28, /UL ASN 264, /UL GLU 305, /UL VAL 504, /UL THR 687, /UL GLN
777, /UM VAL 201, /UM GLU 317, /UM PRO 368, /UM ILE 468, /UM SER 707, /UN SER
349, /UO LYS 334, /UO THR 512, /UQ GLN 101, /UQ ASP 159, /UQ ASP 730, /UQ THR
788, /UQ LEU 829, /UR ILE 45, /UR SER 184, /UR LEU 326, /US LYS 13, /US PHE
134, /US SER 512, /UT GLU 348, /UT LYS 528, /UT PHE 804, /UT LEU 1189, /UT LEU
1441, /UT SER 1495, /UT ARG 1563, /UT SER 1825, /UT LEU 2149, /UT SER 2171,
/UT THR 2195, /UT THR 2220, /UT TYR 2241, /UT LYS 2261, /UT PRO 2287, /UT ARG
2312, /UT SER 2346, /UT VAL 2370, /UT GLU 2379, /UT TYR 2390, /UT LEU 2417,
/UU PHE 673, /UU LYS 766, /UV LYS 274, /UV ILE 317, /UV ASN 445, /UV GLU 983,
/UV SER 1116, /UX ASN 31, /UZ PHE 257, /CD LEU 336, /CD TYR 415, /CE ASP 19,
/CE ALA 437, /CG LEU 125, /CH THR 83, /CH GLU 375, /CH GLN 570, /CJ LYS 63,
/CK LEU 386, /CK ALA 539, /CL ARG 322, /CL GLY 376, /CL GLY 569, /CL LEU 636,
/CL ASN 1164, /CM ILE 366, /CN PRO 27, /CN SER 105, /CN LYS 233, /CN ILE 270,
/JC LEU 37, /JC LYS 366, /JF ILE 55, /JF ILE 251, /JG SER 56, /JG ILE 251, /JH
ASP 401, /JH ARG 466, /JI SER 1721, /JK GLN 500, /JM SER 84, /JM GLU 154, /JM
ARG 216, /JN ARG 98, /JN SER 119, /JN ASN 170, /JN SER 330, /JO PRO 225, /JO
GLN 288, /JP ASN 159, /JP GLU 469, /JQ LYS 148, /JQ SER 203, /DE LEU 246, /DG
GLU 218, /DH SER 187, /DI LYS 123, /DJ GLU 186, /DL ALA 145, /DO GLY 130, /DQ
LYS 127, /DS GLU 7, /DS ASN 87, /DS ILE 119, /DX ARG 144, /D2 U 24, /D2 A 70,
/D2 C 418, /D2 G 489, /D3 C 18, /D3 G 127, /D3 U 177, /D3 U 203, /D3 U 216,
/D3 U 240, /D3 U 603, /D3 C 658, /D3 U 695, /D3 A 788, /D3 G 810, /D3 A 855,
/D3 G 976, /D3 A 1084, /D3 G 1179, /D3 A 1226, /D3 U 1276, /D3 U 1443, /D3 G
1454, /D3 A 1516, /D3 G 1534, /D3 G 1542, /D3 A 1719, /D3 A 1754, /D3 A 1790,
/D4 C 106, /D4 A 118, /D4 U 191, /D4 C 206, /D4 U 260, /D4 A 267, /EB ASN 301,
/EC SER 244, /ED THR 99, /ED LEU 193, /ED ASP 249, /ED ASN 310, /EG THR 23,
/EG ASN 149, /EG GLN 248, /EH VAL 237, /EI SER 17, /EI THR 245, /EI GLY 356,
/EJ ASP 73, /EJ THR 114, /EJ PRO 162, /EJ PRO 291, /EK MET 238, /EK ILE 347,
/EN SER 361  
Missing OXT added to C-terminal residue /UC ASN 610  
Missing OXT added to C-terminal residue /UD PHE 776  
Missing OXT added to C-terminal residue /UG GLY 554  
Missing OXT added to C-terminal residue /UH ILE 723  
Missing OXT added to C-terminal residue /UJ ASP 1769  
26 messages similar to the above omitted  
24715 hydrogen bonds  
Adding 'H' to /CA ALA 80  
Adding 'H' to /CA VAL 134  
Adding 'H' to /DA ALA 2  
Adding 'H' to /DA GLU 238  
Adding 'H' to /JA ALA 2  
191 messages similar to the above omitted  
/CA LYS 326 is not terminus, removing H atom from 'C'  
/DA THR 245 is not terminus, removing H atom from 'C'  
/JA PHE 924 is not terminus, removing H atom from 'C'  
/UA MET 856 is not terminus, removing H atom from 'C'  
/CB GLY 324 is not terminus, removing H atom from 'C'  
43 messages similar to the above omitted  
219182 hydrogens added  
  

> ui tool show Shell

/opt/UCSF/ChimeraX-daily/lib/python3.8/site-
packages/IPython/core/history.py:226: UserWarning: IPython History requires
SQLite, your history will not be saved  
warn("IPython History requires SQLite, your history will not be saved")  

> select ~H

256172 atoms, 483712 bonds, 1739 pseudobonds, 31272 residues, 4 models
selected  

> save test_noh.cif #1 selectedOnly true




OpenGL version: 3.3.0 NVIDIA 455.32.00
OpenGL renderer: TITAN Xp/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: Dell Inc.
Model: Precision T5600
OS: CentOS Linux 7 Core
Architecture: 64bit ELF
Virutal Machine: none
CPU: 32 Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz
Cache Size: 20480 KB
Memory:
	              total        used        free      shared  buff/cache   available
	Mem:            62G         16G         28G        256M         17G         45G
	Swap:          4.9G          0B        4.9G

Graphics:
	03:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP102 [TITAN Xp] [10de:1b02] (rev a1)	
	Subsystem: NVIDIA Corporation Device [10de:11df]	
	Kernel driver in use: nvidia
Locale: ('en_GB', 'UTF-8')
PyQt5 5.15.2, Qt 5.15.2
Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    Babel: 2.9.0
    backcall: 0.2.0
    blockdiag: 2.0.1
    certifi: 2020.12.5
    cftime: 1.4.1
    chardet: 3.0.4
    ChimeraX-AddCharge: 1.0
    ChimeraX-AddH: 2.1.4
    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.11.2
    ChimeraX-AtomicLibrary: 2.0
    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
    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.1
    ChimeraX-CommandLine: 1.1.3
    ChimeraX-ConnectStructure: 2.0
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.2.dev202103090320
    ChimeraX-CoreFormats: 1.0
    ChimeraX-coulombic: 1.0.3
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.1
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1
    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
    ChimeraX-Label: 1.0
    ChimeraX-LinuxSupport: 1.0
    ChimeraX-ListInfo: 1.1
    ChimeraX-Log: 1.1.1
    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.1
    ChimeraX-MDcrds: 2.2
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.0
    ChimeraX-mmCIF: 2.2
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.0
    ChimeraX-ModelPanel: 1.0.1
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.0
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0
    ChimeraX-OpenCommand: 1.5
    ChimeraX-PDB: 2.2
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0
    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
    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
    ChimeraX-ToolshedUtils: 1.1
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.6.1
    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: 4.4.2
    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: 1.1.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.16
    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: 1.0.3
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.4
    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

Change History (9)

comment:1 by pett, 5 years ago

Component: UnassignedPerformance
Owner: set to Greg Couch
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionmmCIF selectedOnly very slow

By comparison, doing the same thing with PDB format takes 26 seconds.

comment:2 by Greg Couch, 5 years ago

Status: assignedfeedback

I've made mmCIF writing 3X faster by using Cython. Please retry your test and confirm that you're seeing the same improvement.

comment:3 by Greg Couch, 5 years ago

I found another bottleneck that might give another 3X improvement. That work is part of #3372.

comment:4 by Greg Couch, 5 years ago

Resolution: fixed
Status: feedbackclosed

Put the other speed changes in. Please evaluate the improvements. It could be even faster, but that would require rewriting much more of the code into C++.

in reply to:  5 ; comment:5 by Tristan Croll, 5 years ago

Was planning to try it in this morning's build, but got waylaid by other things and never even got to installing it. Will try again tomorrow.
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 16 March 2021 21:42
Cc: gregc@cgl.ucsf.edu <gregc@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Subject: Re: [ChimeraX] #4358: mmCIF selectedOnly very slow

#4358: mmCIF selectedOnly very slow
------------------------------------+------------------------
          Reporter:  Tristan Croll  |      Owner:  Greg Couch
              Type:  defect         |     Status:  closed
          Priority:  normal         |  Milestone:
         Component:  Performance    |    Version:
        Resolution:  fixed          |   Keywords:
        Blocked By:                 |   Blocking:
Notify when closed:                 |   Platform:  all
           Project:  ChimeraX       |
------------------------------------+------------------------
Changes (by Greg Couch):

 * status:  feedback => closed
 * resolution:   => fixed


Comment:

 Put the other speed changes in.  Please evaluate the improvements.  It
 could be even faster, but that would require rewriting much more of the
 code into C++.

--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4358#comment:4>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker

in reply to:  6 ; comment:6 by Tristan Croll, 5 years ago

I'm afraid it's still about 45 minutes for the 7ajt case (so about 20% faster overall). For a small model (3io0) the total time is about half what it was previously.
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 16 March 2021 22:19
To: gregc@cgl.ucsf.edu <gregc@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Subject: Re: [ChimeraX] #4358: mmCIF selectedOnly very slow

#4358: mmCIF selectedOnly very slow
------------------------------------+------------------------
          Reporter:  Tristan Croll  |      Owner:  Greg Couch
              Type:  defect         |     Status:  closed
          Priority:  normal         |  Milestone:
         Component:  Performance    |    Version:
        Resolution:  fixed          |   Keywords:
        Blocked By:                 |   Blocking:
Notify when closed:                 |   Platform:  all
           Project:  ChimeraX       |
------------------------------------+------------------------

Comment (by Tristan Croll):

 {{{
 Was planning to try it in this morning's build, but got waylaid by other
 things and never even got to installing it. Will try again tomorrow.
 ________________________________
 From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
 Sent: 16 March 2021 21:42
 Cc: gregc@cgl.ucsf.edu <gregc@cgl.ucsf.edu>; Tristan Croll
 <tic20@cam.ac.uk>
 Subject: Re: [ChimeraX] #4358: mmCIF selectedOnly very slow

 #4358: mmCIF selectedOnly very slow
 ------------------------------------+------------------------
           Reporter:  Tristan Croll  |      Owner:  Greg Couch
               Type:  defect         |     Status:  closed
           Priority:  normal         |  Milestone:
          Component:  Performance    |    Version:
         Resolution:  fixed          |   Keywords:
         Blocked By:                 |   Blocking:
 Notify when closed:                 |   Platform:  all
            Project:  ChimeraX       |
 ------------------------------------+------------------------
 Changes (by Greg Couch):

  * status:  feedback => closed
  * resolution:   => fixed


 Comment:

  Put the other speed changes in.  Please evaluate the improvements.  It
  could be even faster, but that would require rewriting much more of the
  code into C++.

 --
 Ticket URL:
 <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4358#comment:4>
 ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
 ChimeraX Issue Tracker
 }}}

--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4358#comment:5>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker

comment:7 by Greg Couch, 5 years ago

Thank you for checking. I was hoping that all of my other work on mmCIF writing would help this case too. I'll dig deeper and get back to you.

comment:8 by Greg Couch, 5 years ago

Please try again. The speed should be close to writing the file without selectedOnly.

comment:9 by Tristan Croll, 5 years ago

Beautiful!

         7322799 function calls (7318013 primitive calls) in 20.907 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
       14    9.980    0.713   10.838    0.774 utils.py:25(flattened)
        1    6.002    6.002   19.492   19.492 {chimerax.mmcif.mmcif_write.write_mmcif}
  5560942    0.876    0.000    0.877    0.000 {built-in method builtins.isinstance}
        1    0.809    0.809    0.809    0.809 molarray.py:588(intra_bonds)
    31373    0.398    0.000    0.886    0.000 molarray.py:150(<listcomp>)
   481600    0.353    0.000    0.353    0.000 {chimerax.atomic.cymol.c_ptr_to_py_inst}
    32373    0.209    0.000    0.430    0.000 molc.py:318(pointer)
Note: See TracTickets for help on using tickets.