Opened 5 years ago

Closed 5 years ago

#3112 closed defect (fixed)

geometry.find_closest_points index problem(?)

Reported by: Tristan Croll Owned by: Tom Goddard
Priority: normal Milestone:
Component: Core 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-1062.9.1.el7.x86_64-x86_64-with-centos-7.7.1908-Core
ChimeraX Version: 0.93 (2020-04-03)
Description
Not sure if this is a bug or just me not understanding, but in chimerax.geometry.find_closest_points:

i1, i2, near1 = find_closest_points(coords1, coords2)

... the documentation says:

    near1 : numpy int32 array
      A third array is returned that gives the index in set 2
      of the closest for each point in set 1.  This array has length equal to
      the number of points in set 1. If a set 1 point has no point from set 2
      within the distance range then index returned is -1.

Is this array supposed to be ordered such that the first value is the index of the point in coords2 closest to coords1[0], and so on? Because at the moment, that's not the case (it contains all the correct indices, but they're in random order). 

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  

> open 6vsb_1_1_1.pdb

Summary of feedback from opening 6vsb_1_1_1.pdb  
---  
warnings | Duplicate atom serial number found: 69277  
Duplicate atom serial number found: 69278  
Duplicate atom serial number found: 69279  
Duplicate atom serial number found: 69280  
Duplicate atom serial number found: 69276  
925 messages similar to the above omitted  
  
Chain information for 6vsb_1_1_1.pdb #1  
---  
Chain | Description  
A B C | No description available  
  

> open 6vsb

6vsb title:  
Prefusion 2019-nCoV spike glycoprotein with a single receptor-binding domain
up [more info...]  
  
Chain information for 6vsb #2  
---  
Chain | Description  
A B C | Spike glycoprotein  
  
Non-standard residues in 6vsb #2  
---  
NAG — N-acetyl-D-glucosamine  
  
  

> open 21375 fromDatabase emdb

Opened emd_21375.map, grid size 432,432,432, pixel 1.05, shown at level
0.0501, step 2, values float32  

> sequence chain #2/A

Alignment identifier is 2.A  

> toolshed show Shell

/opt/UCSF/ChimeraX/lib/python3.7/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")  
ERROR:ipykernel.inprocess.ipkernel:Exception in message handler:  
Traceback (most recent call last):  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/ipykernel/kernelbase.py",
line 268, in dispatch_shell  
yield gen.maybe_future(handler(stream, idents, msg))  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/tornado/gen.py", line
735, in run  
value = future.result()  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/tornado/gen.py", line
209, in wrapper  
yielded = next(result)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/ipykernel/kernelbase.py",
line 579, in complete_request  
matches = yield gen.maybe_future(self.do_complete(code, cursor_pos))  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/ipykernel/ipkernel.py",
line 354, in do_complete  
return self._experimental_do_complete(code, cursor_pos)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/ipykernel/ipkernel.py",
line 379, in _experimental_do_complete  
completions = list(_rectify_completions(code, raw_completions))  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/IPython/core/completer.py", line 484, in rectify_completions  
completions = list(completions)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/IPython/core/completer.py", line 1815, in completions  
for c in self._completions(text, offset,
_timeout=self.jedi_compute_type_timeout/1000):  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/IPython/core/completer.py", line 1859, in _completions  
full_text=full_text, cursor_line=cursor_line, cursor_pos=cursor_column)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/IPython/core/completer.py", line 1983, in _complete  
text = self.splitter.split_line(line_buffer, cursor_pos)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/IPython/core/completer.py", line 562, in split_line  
l = line if cursor_pos is None else line[:cursor_pos]  
TypeError: 'NoneType' object is not subscriptable  
Traceback (most recent call last):  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/qtconsole/console_widget.py", line 427, in eventFilter  
return self._event_filter_console_keypress(event)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/qtconsole/frontend_widget.py", line 349, in
_event_filter_console_keypress  
return super(FrontendWidget, self)._event_filter_console_keypress(event)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/qtconsole/console_widget.py", line 1405, in
_event_filter_console_keypress  
if self._tab_pressed():  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/qtconsole/frontend_widget.py", line 293, in _tab_pressed  
self._complete()  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/qtconsole/frontend_widget.py", line 735, in _complete  
msg_id = self.kernel_client.complete(code=code, cursor_pos=cursor_pos)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/ipykernel/inprocess/client.py", line 110, in complete  
self._dispatch_to_kernel(msg)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/ipykernel/inprocess/client.py", line 172, in _dispatch_to_kernel  
idents, reply_msg = self.session.recv(stream, copy=False)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/jupyter_client/session.py", line 803, in recv  
msg_list = socket.recv_multipart(mode, copy=copy)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/ipykernel/inprocess/socket.py", line 57, in recv_multipart  
return self.queue.get_nowait()  
File "/opt/UCSF/ChimeraX/lib/python3.7/queue.py", line 198, in get_nowait  
return self.get(block=False)  
File "/opt/UCSF/ChimeraX/lib/python3.7/queue.py", line 167, in get  
raise Empty  
_queue.Empty  
  
_queue.Empty  
  
File "/opt/UCSF/ChimeraX/lib/python3.7/queue.py", line 167, in get  
raise Empty  
  
See log for complete Python traceback.  
  

> select #2/A:691-810@CA

120 atoms, 1 model selected  

> select #2/A:691-810@CA

120 atoms, 1 model selected  

> select #1/A:691-810@CA

120 atoms, 1 model selected  

> select #1

74033 atoms, 75355 bonds, 1 model selected  

> hide #!2 models

> select clear

> clipper associate #3 toModel #1

Chain information for 6vsb_1_1_1.pdb  
---  
Chain | Description  
1.2/A 1.2/B 1.2/C | No description available  
  

> isolde start

> set selectionWidth 4

Done loading forcefield  

> select #1

74033 atoms, 75355 bonds, 12 models selected  

> select clear

> select up

7491 atoms, 7637 bonds, 1 model selected  

> select up

7505 atoms, 7652 bonds, 1 model selected  

> select up

8397 atoms, 8547 bonds, 1 model selected  

> isolde ignore sel

ISOLDE: currently ignoring 476 residues in model 1.2  

> select clear

> save 1_1_1_starting.cxs

> select up

92 atoms, 92 bonds, 1 model selected  

> select up

185 atoms, 191 bonds, 1 model selected  

> select up

24677 atoms, 25118 bonds, 1 model selected  

> select down

185 atoms, 191 bonds, 1 model selected  

> select up

213 atoms, 220 bonds, 1 model selected  

> select up

239 atoms, 247 bonds, 1 model selected  

> select up

264 atoms, 273 bonds, 1 model selected  

> select up

24677 atoms, 25118 bonds, 1 model selected  

> select down

264 atoms, 273 bonds, 1 model selected  

> select :ILE@CD

228 atoms, 1 model selected  

> select clear

> view sel

> view /A:1098

> view /C:1098

> view /A:1098

> view /B:1098

> select up

13 atoms, 12 bonds, 1 model selected  

> set bgColor white

Traceback (most recent call last):  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/isolde.py", line 2685, in _start_sim_or_toggle_pause  
self.start_sim()  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/isolde.py", line 2705, in start_sim  
self.params, self.sim_params, excluded_residues = self.ignored_residues)  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/openmm_interface.py", line 609, in __init__  
raise e  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/openmm_interface.py", line 591, in __init__  
isolde.forcefield_mgr)  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/openmm_interface.py", line 1319, in __init__  
template_dict = find_residue_templates(sim_construct.all_residues, ff,
ligand_db=ligand_db, logger=session.logger)  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/openmm_interface.py", line 3044, in
find_residue_templates  
tname, prot_res = find_glycan_template_name_and_link(sugar)  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/amberff/glycam.py", line 133, in
find_glycan_template_name_and_link  
return ('GLYCAM_'+_glycam_prefix[bonded_atom_numbers]+core_name, link_res)  
KeyError: (3, 4, 5)  
  
KeyError: (3, 4, 5)  
  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/amberff/glycam.py", line 133, in
find_glycan_template_name_and_link  
return ('GLYCAM_'+_glycam_prefix[bonded_atom_numbers]+core_name, link_res)  
  
See log for complete Python traceback.  
  

> select ~protein

16079 atoms, 16734 bonds, 19 models selected  

> select clear

> view /A:1

> select /A:1

45 atoms, 44 bonds, 1 model selected  

> select ~protein

16079 atoms, 16734 bonds, 19 models selected  

> select clear

> select @C5

658 atoms, 2 models selected  

> select @O5

640 atoms, 2 models selected  

> select ~protein

16079 atoms, 16734 bonds, 19 models selected  

> select clear

> select up

51 atoms, 52 bonds, 1 model selected  

> show sel

> select clear

> select @C5

658 atoms, 2 models selected  

> hide HC

> select :AFU@C6,O6

114 atoms, 36 bonds, 1 model selected  

> select up

25 atoms, 25 bonds, 1 model selected  

> select up

24664 atoms, 25106 bonds, 1 model selected  

> select down

12 atoms, 12 bonds, 1 model selected  

> show sel

> select up

12 atoms, 13 bonds, 1 model selected  

> show sel

> select up

12 atoms, 13 bonds, 1 model selected  

Expected an objects specifier or a keyword  

> select sel&@C6,O6

3 atoms, 1 bond, 1 model selected  

> delete sel

> preset custom "make bond"

executed make_bond.py  
Preset implemented in Python; no expansion to individual ChimeraX commands
available.  

> select up

10 atoms, 10 bonds, 1 model selected  

> style sel stick

Changed 10 atom styles  

> select up

23 atoms, 23 bonds, 1 model selected  

> style sel stick

Changed 23 atom styles  

> delete sel

> select :AFU@C6,O6

112 atoms, 35 bonds, 1 model selected  

> select clear

> select clear

> select ~protein

16040 atoms, 16660 bonds, 1 pseudobond, 20 models selected  

Expected an objects specifier or a keyword  

> select /A&~protein

5326 atoms, 5532 bonds, 1 pseudobond, 3 models selected  

> select /B&~protein

5357 atoms, 5564 bonds, 2 models selected  

> select /C&~protein

5357 atoms, 5564 bonds, 2 models selected  

> select clear

> view /B:1098

No objects specified.  

> select clear

> select /C&~protein

5357 atoms, 5564 bonds, 2 models selected  

> select clear

> select /B:3098

Nothing selected  

> view /A:1098

No objects specified.  

> view sel

> select clear

> select :ASN

5303 atoms, 4864 bonds, 2 models selected  

> view /A:99

> select up

14 atoms, 13 bonds, 1 model selected  

> view /B:1098

> select clear

Traceback (most recent call last):  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/isolde.py", line 2685, in _start_sim_or_toggle_pause  
self.start_sim()  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/isolde.py", line 2705, in start_sim  
self.params, self.sim_params, excluded_residues = self.ignored_residues)  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/openmm_interface.py", line 609, in __init__  
raise e  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/openmm_interface.py", line 591, in __init__  
isolde.forcefield_mgr)  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/openmm_interface.py", line 1319, in __init__  
template_dict = find_residue_templates(sim_construct.all_residues, ff,
ligand_db=ligand_db, logger=session.logger)  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/openmm_interface.py", line 3044, in
find_residue_templates  
tname, prot_res = find_glycan_template_name_and_link(sugar)  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/amberff/glycam.py", line 133, in
find_glycan_template_name_and_link  
return ('GLYCAM_'+_glycam_prefix[bonded_atom_numbers]+core_name, link_res)  
KeyError: (3, 4, 5)  
  
KeyError: (3, 4, 5)  
  
File "/home/tic20/.local/share/ChimeraX/0.93/site-
packages/chimerax/isolde/openmm/amberff/glycam.py", line 133, in
find_glycan_template_name_and_link  
return ('GLYCAM_'+_glycam_prefix[bonded_atom_numbers]+core_name, link_res)  
  
See log for complete Python traceback.  
  

> select ~protein

16040 atoms, 16660 bonds, 1 pseudobond, 20 models selected  

> select clear

> view /A:2022

> select /A:2022@C5,O6

2 atoms, 1 model selected  

> select /A:2022@C6,O6

2 atoms, 1 bond, 1 model selected  

> select /A:2027@C6,O6

4 atoms, 2 bonds, 1 model selected  

> select :AMA

4596 atoms, 4659 bonds, 1 model selected  

> select :AMA@C6,O6

576 atoms, 288 bonds, 1 model selected  

> preset custom "make bond"

executed make_bond.py  
Preset implemented in Python; no expansion to individual ChimeraX commands
available.  

> select :AMA@C1

195 atoms, 1 model selected  

> select :BMA@O6

66 atoms, 1 model selected  

> select :AMA@C1

195 atoms, 1 model selected  

> select :AMA@C1|:BMA@O6

261 atoms, 70 bonds, 1 model selected  

> select :AMA@C1

195 atoms, 1 model selected  

> select :BMA@O6

66 atoms, 1 model selected  

> select :AMA@C1|:BMA@O6

261 atoms, 66 bonds, 1 model selected  

> select clear

> select :AMA@C1|:BMA@O6

261 atoms, 66 bonds, 1 model selected  




OpenGL version: 3.3.0 NVIDIA 440.33.01
OpenGL renderer: TITAN Xp/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: Dell Inc.
Model: Precision T5600
OS: CentOS Linux 7 Core
Architecture: 64bit ELF
CPU: 32 Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz
Cache Size: 20480 KB
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

Change History (4)

comment:1 by Eric Pettersen, 5 years ago

Component: UnassignedCore
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissiongeometry.find_closest_points index problem(?)

comment:2 by Tom Goddard, 5 years ago

Sorry, the doc string is wrong. The near1 array is the same length as the i1 array and near1[k] is the index in set 2 closest to i1[k] in set 1. I will fix the doc string.

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

Ah - that makes more sense!

On 2020-04-27 19:13, ChimeraX wrote:

comment:4 by Tom Goddard, 5 years ago

Resolution: fixed
Status: assignedclosed

Fixed doc string. Now reads

near1numpy int32 array
A third array is returned that gives the index in xyz2 of the closest point for each xyz1 point in the i1 array. This array has length equal to the length of array i1.

Note: See TracTickets for help on using tickets.