#4206 closed defect (fixed)
Can't select atom with empty chain id
| Reported by: | Owned by: | Eric Pettersen | |
|---|---|---|---|
| Priority: | minor | Milestone: | |
| Component: | Command Line | Version: | |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
The following bug report has been submitted:
Platform: macOS-10.15.7-x86_64-i386-64bit
ChimeraX Version: 1.2.dev202101290243 (2021-01-29 02:43:44 UTC)
Description
Ctrl-click to select an atom produces an invalid select command if the chain identifier is the empty string. Also it produces an error if the serial number has not been set. I was looking at a molecule made from a Gaussian cube file (small molecule) using a Python script. I attach an mmCIF version that has serial numbers but no chain id.
Log:
UCSF ChimeraX version: 1.2.dev202101290243 (2021-01-29)
© 2016-2020 Regents of the University of California. All rights reserved.
How to cite UCSF ChimeraX
> open /Users/goddard/Downloads/wfc_K001_B329wfc.cube
Opened wfc_K001_B329wfc.cube as #1, grid size 360,360,360, pixel 0.0321, shown
at level -0.00109,0.00109, step 2, values float32
> open
> /Users/goddard/ucsf/chimerax/src/bundles/map_data/src/gaussian/make_atoms.py
Created 1 atomic models for 1 Gaussian Cube files
executed make_atoms.py
> select /:1@@serial_number=-1
Expected an objects specifier or a keyword
> select /:1@@serial_number=-1
Expected an objects specifier or a keyword
> select /:1@@serial_number=-1
Expected an objects specifier or a keyword
> close #2
> open
> /Users/goddard/ucsf/chimerax/src/bundles/map_data/src/gaussian/make_atoms.py
Created 1 atomic models for 1 Gaussian Cube files
executed make_atoms.py
Drag select of 2 atoms
> select /:1@@serial_number=90
Expected an objects specifier or a keyword
> select /A:1@@serial_number=90
Nothing selected
Drag select of 20 atoms
> save /Users/goddard/Desktop/test.mmcif models #2
> open /Users/goddard/Desktop/test.mmcif format mmcif
Summary of feedback from opening /Users/goddard/Desktop/test.mmcif
---
warnings | Unable to infer polymer connectivity due to unspecified
label_seq_id for residue "UNK" near line 90
Atom Al is not in the residue template for UNK /:1
> hide #2 models
> select #3/:1@@serial_number=58
Expected an objects specifier or a keyword
OpenGL version: 4.1 ATI-3.10.18
OpenGL renderer: AMD Radeon Pro Vega 20 OpenGL Engine
OpenGL vendor: ATI Technologies Inc.Hardware:
Hardware Overview:
Model Name: MacBook Pro
Model Identifier: MacBookPro15,3
Processor Name: 8-Core Intel Core i9
Processor Speed: 2.4 GHz
Number of Processors: 1
Total Number of Cores: 8
L2 Cache (per Core): 256 KB
L3 Cache: 16 MB
Hyper-Threading Technology: Enabled
Memory: 32 GB
Boot ROM Version: 1037.147.4.0.0 (iBridge: 17.16.16610.0.0,0)
Software:
System Software Overview:
System Version: macOS 10.15.7 (19H2)
Kernel Version: Darwin 19.6.0
Time since boot: 49 days 10:42
Graphics/Displays:
Intel UHD Graphics 630:
Chipset Model: Intel UHD Graphics 630
Type: GPU
Bus: Built-In
VRAM (Dynamic, Max): 1536 MB
Vendor: Intel
Device ID: 0x3e9b
Revision ID: 0x0002
Automatic Graphics Switching: Supported
gMux Version: 5.0.0
Metal: Supported, feature set macOS GPUFamily2 v1
Radeon Pro Vega 20:
Chipset Model: Radeon Pro Vega 20
Type: GPU
Bus: PCIe
PCIe Lane Width: x8
VRAM (Total): 4 GB
Vendor: AMD (0x1002)
Device ID: 0x69af
Revision ID: 0x00c0
ROM Revision: 113-D2060I-087
VBIOS Version: 113-D20601MA0T-016
Option ROM Version: 113-D20601MA0T-016
EFI Driver Version: 01.01.087
Automatic Graphics Switching: Supported
gMux Version: 5.0.0
Metal: Supported, feature set macOS GPUFamily2 v1
Displays:
Color LCD:
Display Type: Built-In Retina LCD
Resolution: 2880 x 1800 Retina
Framebuffer Depth: 24-Bit Color (ARGB8888)
Main Display: Yes
Mirror: Off
Online: Yes
Automatically Adjust Brightness: No
Connection Type: Internal
Locale: ('en_US', 'UTF-8')
PyQt5 5.15.2, Qt 5.15.2
Installed Packages:
alabaster: 0.7.12
appdirs: 1.4.4
appnope: 0.1.2
Babel: 2.9.0
backcall: 0.2.0
biopython: 1.78
blockdiag: 2.0.1
certifi: 2020.12.5
cftime: 1.3.1
chardet: 3.0.4
ChimeraX-AddCharge: 1.0
ChimeraX-AddH: 2.1.3
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
ChimeraX-AtomicLibrary: 1.2
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.4
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-CommandLine: 1.1.3
ChimeraX-ConnectStructure: 2.0
ChimeraX-Contacts: 1.0
ChimeraX-Core: 1.2.dev202101290243
ChimeraX-CoreFormats: 1.0
ChimeraX-coulombic: 1.0.3
ChimeraX-Crosslinks: 1.0
ChimeraX-Crystal: 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-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.0
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-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
ChimeraX-uniprot: 2.1
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
docutils: 0.16
filelock: 3.0.12
flake8: 3.8.3
flake8-polyfill: 1.0.2
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.0
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
mccabe: 0.6.1
MolecularDynamicsViewer: 1.1
msgpack: 1.0.0
netCDF4: 1.5.4
networkx: 2.5
numexpr: 2.7.2
numpy: 1.19.2
numpydoc: 1.1.0
openvr: 1.14.1501
packaging: 20.8
ParmEd: 3.2.0
parso: 0.7.1
pep8: 1.7.1
pep8-naming: 0.10.0
pexpect: 4.8.0
pickleshare: 0.7.5
Pillow: 7.2.0
pip: 20.3.1
pkginfo: 1.5.0.1
prompt-toolkit: 3.0.14
psutil: 5.7.2
ptyprocess: 0.7.0
pycodestyle: 2.6.0
pycollada: 0.7.1
pydicom: 2.0.0
pyflakes: 2.2.0
Pygments: 2.7.1
PyOpenGL: 3.1.5
PyOpenGL-accelerate: 3.1.5
pyparsing: 2.4.7
PyQt5: 5.15.2
PyQt5-sip: 12.8.1
PyQtWebEngine: 5.15.2
python-dateutil: 2.8.1
pytz: 2020.1
pyzmq: 22.0.0
qtconsole: 4.7.7
QtPy: 1.9.0
RandomWords: 0.3.0
requests: 2.24.0
scipy: 1.5.2
Send2Trash: 1.5.0
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
File attachment: test.mmcif
Attachments (1)
Change History (6)
by , 5 years ago
| Attachment: | test.mmcif added |
|---|
comment:1 by , 5 years ago
| Component: | Unassigned → Command Line |
|---|---|
| Owner: | set to |
| Platform: | → all |
| Priority: | normal → minor |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → Can't select atom with empty chain id |
The problem here is that Atom.string(style='command') is returning an illegal specifier when the chain id is an empty string.
For model in this bug had no way of identifying the atoms by a specifier because it did not have atom serial numbers and lots of atoms had the same name in the same residue (from an inorganic crystal unit cell). I fixed the script that created the atoms from a Gaussian cube file so it assigned serial numbers and also used chain id A.
comment:2 by , 5 years ago
| Status: | assigned → accepted |
|---|
The real underlying problem is that there is no way to specify a blank chain ID in a legal atom specifier, including various uses of quotation marks. Allowing the space character as a chain ID doesn't play well with the lexer/parser because unquoted spaces are ignored (and you can't quote a chain ID because unfortunately quotation marks themselves are legal chain IDs).
What I can do is use '?' instead of space. Hopefully structures like these only have spaces and not a mix (I have never seen a file with a mix). Though not perfect, it would certainly be a step forward.
File readers need to assign serial numbers, particularly if there are atoms of the same name in the same residue. Otherwise there simply is no atom spec to specify a single atom. You have fixed your script so it's moot.
comment:3 by , 5 years ago
FYI, if you had used atomic.struct_edit.add_atom to add your atoms, the serial numbering would have been handled automatically.
comment:4 by , 5 years ago
| Resolution: | → fixed |
|---|---|
| Status: | accepted → closed |
Okay, made it so that if the chain ID is a blank, then the atom spec uses "/?". Unfortunately, your example file doesn't set the chain ID to a blank, it sets it to the empty string. Not even "/?" matches an empty chain ID. I changed atomic to reject empty chain IDs.
I unwittingly put the changes on my color-key branch, so it'll be a day or two before they actually get pushed.
comment:5 by , 5 years ago
Ok, all sounds reasonable. This was of course a perverse case with empty chain id.
Added by email2trac