Opened 4 years ago
Closed 4 years ago
#4767 closed defect (fixed)
Coulombic: can't invert matrix
| Reported by: | Owned by: | Eric Pettersen | |
|---|---|---|---|
| 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 , 4 years ago
| Component: | Unassigned → Surface/Binding Analysis |
|---|---|
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → accepted |
| Summary: | ChimeraX bug report submission → Coulombic: can't invert matrix |
comment:2 by , 4 years ago
| Cc: | added |
|---|---|
| Owner: | changed from to |
| Status: | accepted → assigned |
comment:3 by , 4 years ago
| Cc: | added; removed |
|---|---|
| Owner: | changed from to |
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 , 4 years ago
Two water atoms in the structure have the exact same xy coordinates only differ in Z.
comment:5 by , 4 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Don't try for coplanar positioning if the points involved are collinear.
Note:
See TracTickets
for help on using tickets.
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: