Opened 5 years ago

Last modified 5 years ago

#3578 assigned defect

Clipper: failure in French&Wilson treatment of intensities

Reported by: roger.b.sutton@… Owned by: Tristan Croll
Priority: normal Milestone:
Component: Third Party Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Linux-4.15.0-112-generic-x86_64-with-debian-buster-sid
ChimeraX Version: 0.93 (2020-04-03)
Description
Isolde doesn't seem to like my data

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

> toolshed show ISOLDE

> set selectionWidth 4

Forcefield cache not found or out of date. Regenerating from ffXML files. This
is normal if running ISOLDE for the first time, or after upgrading OpenMM.  
Done loading forcefield  
Traceback (most recent call last):  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/isolde.py", line 1271, in _choose_reflections_file  
self.add_xtal_data(filename)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/isolde.py", line 1297, in add_xtal_data  
map_mgr = get_map_mgr(m, create=True, auto_add_to_session=True)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/symmetry.py", line 174, in get_map_mgr  
sh = get_symmetry_handler(structure, create=create,
auto_add_to_session=auto_add_to_session)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/symmetry.py", line 159, in get_symmetry_handler  
sh = _get_symmetry_handler(structure, create)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/symmetry.py", line 166, in _get_symmetry_handler  
p = structure.parent  
AttributeError: 'NoneType' object has no attribute 'parent'  
  
AttributeError: 'NoneType' object has no attribute 'parent'  
  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/symmetry.py", line 166, in _get_symmetry_handler  
p = structure.parent  
  
See log for complete Python traceback.  
  

> open2 "/media/rosutton/Dnase1L3 refine 26/DNAse1L3_refine_26-coot-0.pdb"

Summary of feedback from opening <_io.textiowrapper
name="/media/rosutton/Dnase1L3 refine 26/DNAse1L3_refine_26-coot-0.pdb"
mode="rt" encoding="utf-8">  
---  
warnings | Ignored bad PDB record found on line 1  
REMARK Date 2020-01-04 Time 13:55:52 CST -0600 (1578167752.03 s)  
  
Ignored bad PDB record found on line 2  
REMARK PHENIX refinement  
  
Ignored bad PDB record found on line 4  
REMARK ****************** INPUT FILES AND LABELS
******************************  
  
Ignored bad PDB record found on line 5  
REMARK Reflections:  
  
Ignored bad PDB record found on line 6  
REMARK file name : /home/rosutton/Projects/DNAse1L3/Refine_25/DNAse1L3_re  
  
27 messages similar to the above omitted  
  
Chain information for DNAse1L3_refine_26-coot-0.pdb #1  
---  
Chain | Description  
A | No description available  
B | No description available  
C | No description available  
D | No description available  
  
Chain information for DNAse1L3_refine_26-coot-0.pdb  
---  
Chain | Description  
1.2/A | No description available  
1.2/B | No description available  
1.2/C | No description available  
1.2/D | No description available  
  
Cached rota8000-val data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-leu data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-ile data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-pro data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-phe data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-tyr data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-trp data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-ser data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-thr data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-cys data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-met data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-lys data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-his data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-arg data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-asp data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-asn data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-gln data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rota8000-glu data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rama8000-cispro data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rama8000-transpro data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rama8000-gly-sym data not found. Regenerating from text file. This is
normal if running ISOLDE for the first time  
Cached rama8000-prepro-noGP data not found. Regenerating from text file. This
is normal if running ISOLDE for the first time  
Cached rama8000-ileval-nopreP data not found. Regenerating from text file.
This is normal if running ISOLDE for the first time  
Cached rama8000-general-noGPIVpreP data not found. Regenerating from text
file. This is normal if running ISOLDE for the first time  
Reflection data provided as intensities. Performing French & Wilson scaling to
convert to amplitudes...  
Failed on HKL = ( -23, -5, 1)  
N_bins: 60 Imean: -10.338729306497815 I: 27.850000381469727 sigI:
26.019224166870117 eobs_sq: -2.69375467292351 sig_eobs_sq: -2.5166752504601537  
Traceback (most recent call last):  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/isolde.py", line 1271, in _choose_reflections_file  
self.add_xtal_data(filename)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/isolde.py", line 1299, in add_xtal_data  
auto_choose_reflection_data=False)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/maps/map_mgr.py", line 279, in add_xmapset_from_mtz  
auto_choose_reflection_data)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/maps/map_mgr.py", line 301, in add_xmapset_from_file  
return XmapSet(self, mtzdata)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/maps/xmapset.py", line 189, in __init__  
fill_with_fcalc, exclude_missing_reflections)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/maps/xmapset.py", line 245, in init_maps  
fsigf_data = french_wilson_analytical(fsigf.data)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/reflection_tools/french_wilson.py", line 113, in
french_wilson_analytical  
e_xpct = _expected_E_FW_acen(eobs_sq, sig_eobs_sq)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/reflection_tools/french_wilson.py", line 195, in
_expected_E_FW_acen  
pbdv(-1.5, -x)[0] / # Scipy parabolic cylinder function returns value *and*
derivative  
ValueError: math domain error  
  
ValueError: math domain error  
  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/reflection_tools/french_wilson.py", line 195, in
_expected_E_FW_acen  
pbdv(-1.5, -x)[0] / # Scipy parabolic cylinder function returns value *and*
derivative  
  
See log for complete Python traceback.  
  
Reflection data provided as intensities. Performing French & Wilson scaling to
convert to amplitudes...  
Failed on HKL = ( -23, -5, 1)  
N_bins: 60 Imean: -10.338729306497815 I: 27.850000381469727 sigI:
26.019224166870117 eobs_sq: -2.69375467292351 sig_eobs_sq: -2.5166752504601537  
Traceback (most recent call last):  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/isolde.py", line 1271, in _choose_reflections_file  
self.add_xtal_data(filename)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/isolde.py", line 1299, in add_xtal_data  
auto_choose_reflection_data=False)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/maps/map_mgr.py", line 279, in add_xmapset_from_mtz  
auto_choose_reflection_data)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/maps/map_mgr.py", line 301, in add_xmapset_from_file  
return XmapSet(self, mtzdata)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/maps/xmapset.py", line 189, in __init__  
fill_with_fcalc, exclude_missing_reflections)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/maps/xmapset.py", line 245, in init_maps  
fsigf_data = french_wilson_analytical(fsigf.data)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/reflection_tools/french_wilson.py", line 113, in
french_wilson_analytical  
e_xpct = _expected_E_FW_acen(eobs_sq, sig_eobs_sq)  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/reflection_tools/french_wilson.py", line 195, in
_expected_E_FW_acen  
pbdv(-1.5, -x)[0] / # Scipy parabolic cylinder function returns value *and*
derivative  
ValueError: math domain error  
  
ValueError: math domain error  
  
File "/home/rosutton/.local/share/ChimeraX/0.93/site-
packages/chimerax/clipper/reflection_tools/french_wilson.py", line 195, in
_expected_E_FW_acen  
pbdv(-1.5, -x)[0] / # Scipy parabolic cylinder function returns value *and*
derivative  
  
See log for complete Python traceback.  
  




OpenGL version: 3.3.0 NVIDIA 450.36.06
OpenGL renderer: Quadro P5000/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: Dell Inc.
Model: Precision 7920 Tower
OS: Ubuntu 18.04 bionic
Architecture: 64bit ELF
CPU: 48 Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz
Cache Size: 16896 KB
Graphics:
	73:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104GL [Quadro P5000] [10de:1bb0] (rev a1)
	Subsystem: Dell GP104GL [Quadro P5000] [1028:11b2]
	Kernel driver in use: nvidia

Change History (3)

comment:1 by Tristan Croll, 5 years ago

Component: UnassignedThird Party
Owner: set to Tristan Croll
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionClipper: failure in French&Wilson treatment of intensities

Hi Roger,

The first error arises because the way I have things implemented right now, you need to have a model loaded first before you can add the crystallographic data. The fact that the GUI lets you do things the other way around is a bug that I should fix.

The second is also a bug that I will *eventually* fix, but probably not immediately since it only comes up fairly rarely, will take quite a bit of fiddling on my part, and can be worked around fairly easily. In essence, my implementation of French & Wilson scaling of intensities to amplitudes (based on Read & McCoy (2016) Acty Cryst D72(3): 375-387) currently fails when the average intensity of all reflections in a resolution shell is less than zero (meaning that, on average, the measured reflections are so weak that they're below the estimated background value). I need to discuss with Randy the best way to handle this situation, but in the meantime the easiest approach is to do this conversion with another tool and then feed ISOLDE the resulting F/sigF. Using Phenix, for example, you can easily do it from the command line with phenix.french_wilson your_reflection_file.mtz.

in reply to:  2 ; comment:2 by Roger.B.Sutton@…, 5 years ago

Hi Tristen,

I figured that the average intensity of resolution shells was part of the reason. I suppose that will always be a problem with the liberal use of CC1/2 as a resolution cutoff metric. I've reviewed several papers that really push CC1/2 to the limit; hence, I always question whether those super weak reflections are even measured... Oh well.. we still use it.


Anyway, my students are really excited to use ISOLDE. I've been solving structures since the 1990s, and I've always wished for this sort of model building tool. Thanks for implementing this.

Have you thought about implementing this tool into COOT? ChimeraX is pretty, but it's buggy. My Ubuntu system just doesn't like it very much right now.


Bryan Sutton

---


R. Bryan Sutton, Ph.D.

Department of Cell Physiology and Molecular Biophysics
Center for Membrane Protein Research
Texas Tech University Health Sciences Center
Lubbock, TX 79430
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: Saturday, August 1, 2020 8:41:29 AM
Cc: Sutton, Roger B; tic20@cam.ac.uk
Subject: Re: [ChimeraX] #3578: Clipper: failure in French&Wilson treatment of intensities (was: ChimeraX bug report submission)

CAUTION: This email originated from outside of TTUHSC. Do not click links or open attachments unless you recognize the sender and know the content is safe.


#3578: Clipper: failure in French&Wilson treatment of intensities
---------------------------------------+---------------------------
          Reporter:  roger.b.sutton@…  |      Owner:  Tristan Croll
              Type:  defect            |     Status:  assigned
          Priority:  normal            |  Milestone:
         Component:  Third Party       |    Version:
        Resolution:                    |   Keywords:
        Blocked By:                    |   Blocking:
Notify when closed:                    |   Platform:  all
           Project:  ChimeraX          |
---------------------------------------+---------------------------
Changes (by Tristan Croll):

 * status:  new => assigned
 * component:  Unassigned => Third Party
 * project:   => ChimeraX
 * platform:   => all
 * owner:  (none) => Tristan Croll


Comment:

 Hi Roger,

 The first error arises because the way I have things implemented right
 now, you need to have a model loaded first before you can add the
 crystallographic data. The fact that the GUI lets you do things the other
 way around is a bug that I should fix.

 The second is also a bug that I will *eventually* fix, but probably not
 immediately since it only comes up fairly rarely, will take quite a bit of
 fiddling on my part, and can be worked around fairly easily. In essence,
 my implementation of French & Wilson scaling of intensities to amplitudes
 (based on Read & McCoy (2016) Acty Cryst D72(3): 375-387) currently fails
 when the average intensity of all reflections in a resolution shell is
 less than zero (meaning that, on average, the measured reflections are so
 weak that they're below the estimated background value). I need to discuss
 with Randy the best way to handle this situation, but in the meantime the
 easiest approach is to do this conversion with another tool and then feed
 ISOLDE the resulting F/sigF. Using Phenix, for example, you can easily do
 it from the command line with `phenix.french_wilson
 your_reflection_file.mtz`.

--
Ticket URL: <https://urldefense.com/v3/__https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/3578*comment:1__;Iw!!PZU9J6Y!M-IV5c5TBcHyJHubxlJka8QhW42rvcmBKKgV6IGO0d8rny-8YRRT18arY-rHKIp5e3nvIWM$ >
ChimeraX <https://urldefense.com/v3/__http://www.rbvi.ucsf.edu/chimerax/__;!!PZU9J6Y!M-IV5c5TBcHyJHubxlJka8QhW42rvcmBKKgV6IGO0d8rny-8YRRT18arY-rHKIp5giIe9Fc$ >
ChimeraX Issue Tracker

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

Hi Bryan,

I'm glad to hear you're finding it useful!

Regarding implementation in Coot: there are various reasons why that's 
unlikely to happen. Lack of resources is one, of course. One of the 
primary reasons I started building ISOLDE in ChimeraX is in fact because 
of its graphical capabilities - not so much because it's "pretty" 
(although that definitely helps!) but because in the lower-resolution 
maps that have always been my special focus I see visualisation as 
absolutely critical to understanding what's happening. Line graphics may 
be fine for atomic-resolution data, but it really starts to hamper you 
out in the badlands beyond 3A. Of course, Coot's graphics have improved 
since then - but at the same time I now have 3 and a half years of 
development in ChimeraX behind me.

The other aspect is simple personalities. While ChimeraX of course still 
has some bugs (after all, it was in extremely early alpha when I first 
started with it), the team have been amazingly supportive of my work 
from day 1 and very responsive in terms of both fixing bugs and adding 
new features I've needed along the way. This has made an incalculable 
difference for someone who came not just to structural biology but to 
computational methods development relatively late in my career.

Anyway, the good news is that the issues you have with ChimeraX in 
Ubuntu are probably resolved in version 1.0 (prior to that, the Ubuntu 
builds of ChimeraX used different compilers to the other Linux versions, 
making them incompatible with ISOLDE). I'll be releasing a new ISOLDE 
version for ChimeraX 1.0 very soon now - this should be compatible with 
all the "native" ChimeraX packages. If you run into further trouble with 
that, I'd suggest making liberal use of the "report a bug" tool - just 
looking through the history, I myself have reported 367 to date, most of 
which were fixed within days (the remainder being low-priority things 
that only come up under obscure circumstances).

Best regards,

Tristan


On 2020-08-01 20:49, ChimeraX wrote:
Note: See TracTickets for help on using tickets.