Opened 4 years ago

Closed 4 years ago

#4767 closed defect (fixed)

Coulombic: can't invert matrix

Reported by: chimerax-bug-report@… Owned by: pett
Priority: normal Milestone:
Component: Surface/Binding Analysis Version:
Keywords: Cc: Tom Goddard
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Windows-10-10.0.19041
ChimeraX Version: 1.2.5 (2021-05-24 04:13:57 UTC)
Description
(Describe the actions that caused this problem to occur here)

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  

> ui tool show "Build Structure"

> help help:quickstart

> ui tool show "Command Line Interface"

> open 1zeh

Summary of feedback from opening 1zeh fetched from pdb  
---  
notes | Fetching compressed mmCIF 1zeh from
http://files.rcsb.org/download/1zeh.cif  
Fetching CCD CRS from http://ligand-expo.rcsb.org/reports/C/CRS/CRS.cif  
Fetching CCD ZN from http://ligand-expo.rcsb.org/reports/Z/ZN/ZN.cif  
Fetching CCD CL from http://ligand-expo.rcsb.org/reports/C/CL/CL.cif  
  
1zeh title:  
Structure of insulin [more info...]  
  
Chain information for 1zeh #1  
---  
Chain | Description  
A C | insulin  
B D | insulin  
  
Non-standard residues in 1zeh #1  
---  
CL — chloride ion  
CRS — M-cresol  
ZN — zinc ion  
  
1zeh mmCIF Assemblies  
---  
1| author_and_software_defined_assembly  
2| author_and_software_defined_assembly  
3| software_defined_assembly  
4| software_defined_assembly  
5| software_defined_assembly  
6| software_defined_assembly  
7| software_defined_assembly  
  
Drag select of 151 atoms, 102 residues, 4 pseudobonds, 126 bonds  

> select clear

> show #!1 target m

> view #1 clip false

> ui tool show "Color Actions"

> ui tool show "Model Panel"

> select #1

963 atoms, 872 bonds, 4 pseudobonds, 218 residues, 2 models selected  

> ~select #1

Nothing selected  

> ui tool show "Surface Color"

Surface Color: no surface chosen  

No surface chosen for coloring  

Drag select of 151 atoms, 102 residues, 4 pseudobonds, 126 bonds  

Surface Color: no surface chosen  

> ui tool show "Surface Color"

> style sel stick

Changed 860 atom styles  

> style sel sphere

Changed 860 atom styles  

> style sel ball

Changed 860 atom styles  

> undo

> undo

> undo

> select clear

> show cartoons

Drag select of 151 atoms, 102 residues, 4 pseudobonds, 126 bonds  

> show sel atoms

> show sel cartoons

> lighting simple

> lighting soft

> lighting full

> lighting soft

> lighting simple

> lighting soft

> lighting full

> lighting soft

> lighting full

> show sel surfaces

> hide sel surfaces

> nucleotides sel atoms

> style nucleic & sel stick

Changed 0 atom styles  

> nucleotides sel ladder

> nucleotides sel atoms

> style nucleic & sel stick

Changed 0 atom styles  

> color sel bynucleotide

> color sel byhetero

> color sel bychain

> color sel bynucleotide

> color sel bychain

> rainbow sel

> coulombic sel

Traceback (most recent call last):  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\toolbar\tool.py", line 202, in callback  
bundle_info.run_provider(session, name, session.toolbar,
display_name=display_name)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\core\toolshed\info.py", line 379, in run_provider  
return api._api_caller.run_provider(api, session, name, mgr, **kw)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\core\toolshed\\__init__.py", line 1285, in run_provider  
return cls._get_func(api, "run_provider")(session, name, mgr, **kw)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\shortcuts\\__init__.py", line 52, in run_provider  
shortcuts.run_provider(session, name)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\shortcuts\shortcuts.py", line 1333, in run_provider  
keyboard_shortcuts(session).try_shortcut(name)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\shortcuts\shortcuts.py", line 389, in try_shortcut  
self.run_shortcut(keys)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\shortcuts\shortcuts.py", line 407, in run_shortcut  
sc.run(self.session, status = self._enabled)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\shortcuts\shortcuts.py", line 326, in run  
f(s)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\shortcuts\shortcuts.py", line 61, in func_plus_tip  
func(cmd + " %s")(session)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\shortcuts\shortcuts.py", line 568, in run_expanded_command  
run(session, cmd)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\shortcuts\shortcuts.py", line 511, in run  
run_command(session, command, **kw)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\core\commands\run.py", line 36, in run  
results = command.run(text, log=log, return_json=return_json)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\core\commands\cli.py", line 2852, in run  
result = ci.function(session, **kw_args)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\coulombic\cmd.py", line 90, in cmd_coulombic  
assign_charges(session, needs_assignment, his_scheme, charge_method,  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\coulombic\coulombic.py", line 74, in assign_charges  
cmd_addh(session, addh_structures, hbond=hbond)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\addh\cmd.py", line 63, in cmd_addh  
add_h_func(session, structures, template=template, in_isolation=in_isolation,
**prot_schemes)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\addh\cmd.py", line 170, in hbond_add_hydrogens  
add_hydrogens(session, atoms, type_info_for_atom, naming_schemas,
hydrogen_totals,  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\addh\hbond.py", line 632, in add_hydrogens  
positions = bond_positions(at_pos, geom,  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\atomic\bond_geom.py", line 78, in bond_positions  
return tetra_pos(bondee, bonded, bond_len, toward, away, toward2, away2)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\atomic\bond_geom.py", line 158, in tetra_pos  
pos = angle_pos(bondee, cur_bonded[0], bond_len, 109.5, coplanar=coplanar)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\atomic\bond_geom.py", line 247, in angle_pos  
points.append(xform.inverse() * angle)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\geometry\place.py", line 190, in inverse  
self._inverse = Place(m34.invert_matrix(self._matrix))  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\geometry\matrix.py", line 130, in invert_matrix  
rinv[:, :] = matrix_inverse(r)  
File "<__array_function__ internals>", line 5, in inv  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\numpy\linalg\linalg.py", line 546, in inv  
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\numpy\linalg\linalg.py", line 88, in _raise_linalgerror_singular  
raise LinAlgError("Singular matrix")  
numpy.linalg.LinAlgError: Singular matrix  
  
numpy.linalg.LinAlgError: Singular matrix  
  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\numpy\linalg\linalg.py", line 88, in _raise_linalgerror_singular  
raise LinAlgError("Singular matrix")  
  
See log for complete Python traceback.  
  




OpenGL version: 3.3.0 NVIDIA 456.71
OpenGL renderer: GeForce GTX 1050 Ti/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: LOGIN INFORMATICA LTDA
Model: LOG-B250M-G
OS: Microsoft Windows 10 Pro (Build 19043)
Memory: 17,053,159,424
MaxProcessMemory: 137,438,953,344
CPU: 4 Intel(R) Core(TM) i5-7600 CPU @ 3.50GHz
OSLanguage: en-US
Locale: ('en_US', 'cp1252')
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-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
    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
    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
    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
    pywin32: 228
    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.3.0
    WMI: 1.5.1

Change History (5)

comment:1 by pett, 4 years ago

Component: UnassignedSurface/Binding Analysis
Owner: set to pett
Platform: all
Project: ChimeraX
Status: newaccepted
Summary: ChimeraX bug report submissionCoulombic: can't invert matrix

comment:2 by pett, 4 years ago

Cc: pett added
Owner: changed from pett to Tom Goddard
Status: acceptedassigned

I'm not enough of a matrix-math wizard to tell if this is a problem with the code calling invert() or with the invert code itself, so reassigning to T.G. to figure out that part. Running "coulombic" on 1zeh winds up throwing a "Singular matrix" error when trying to invert:

Matrix rotation and translation

0.00000000 0.00000000 0.00000000 0.00000000
0.00000000 0.00000000 0.00000000 0.00000000
0.00000000 0.00000000 -1.00000000 -17.50200000

Axis 0.70710678 0.70710678 0.00000000
Axis point 0.00000000 0.00000000 -8.75100000
Rotation angle (degrees) 180.00000000
Shift along axis 0.00000000

comment:3 by Tom Goddard, 4 years ago

Cc: Tom Goddard added; pett removed
Owner: changed from Tom Goddard to pett

The call to look_at() in angle_pos() in bond_geom.py produces a singular matrix with atom_pos and bond_pos both along z-axis and up direction along z axis.

comment:4 by pett, 4 years ago

Two water atoms in the structure have the exact same xy coordinates only differ in Z.

comment:5 by pett, 4 years ago

Resolution: fixed
Status: assignedclosed

Don't try for coplanar positioning if the points involved are collinear.

Note: See TracTickets for help on using tickets.