Opened 4 years ago
Last modified 8 months ago
#5434 feedback defect
metadata interchange — at Version 5
| Reported by: | Tristan Croll | Owned by: | Eric Pettersen |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Input/Output | Version: | |
| Keywords: | Cc: | Greg Couch | |
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description (last modified by )
The following bug report has been submitted:
Platform: Linux-3.10.0-1160.25.1.el7.x86_64-x86_64-with-glibc2.17
ChimeraX Version: 1.3.dev202110120902 (2021-10-12 09:02:44 UTC)
Description
I think I've suggested this before, but it's buried in some other ticket and I can't find it via the search: I really think at least some metadata from PDB and mmCIF files should be parsed into an object that can be used to write back to either PDB or mmCIF. Most importantly, if I load from PDB and write to mmCIF or vice versa, all the symmetry information corresponding to CRYST1 is currently lost. The equivalent information to CRYST1 in mmCIF can be found in the _cell and _symmetry sections, e.g.:
#
_cell.entry_id 3IO0
_cell.length_a 173.410
_cell.length_b 173.410
_cell.length_c 173.410
_cell.angle_alpha 90.00
_cell.angle_beta 90.00
_cell.angle_gamma 90.00
_cell.Z_PDB 24
_cell.pdbx_unique_axis ?
_cell.length_a_esd ?
_cell.length_b_esd ?
_cell.length_c_esd ?
_cell.angle_alpha_esd ?
_cell.angle_beta_esd ?
_cell.angle_gamma_esd ?
#
_symmetry.entry_id 3IO0
_symmetry.space_group_name_H-M 'I 21 3'
_symmetry.pdbx_full_space_group_name_H-M ?
_symmetry.cell_setting ?
_symmetry.Int_Tables_number 199
_symmetry.space_group_name_Hall ?
OpenGL version: 3.3.0 NVIDIA 465.19.01
OpenGL renderer: NVIDIA TITAN Xp/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: Dell Inc.
Model: Precision T5600
OS: CentOS Linux 7 Core
Architecture: 64bit ELF
Virutal Machine: none
CPU: 32 Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz
Cache Size: 20480 KB
Memory:
total used free shared buff/cache available
Mem: 62G 13G 23G 524M 26G 48G
Swap: 4.9G 0B 4.9G
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
Locale: ('en_GB', 'UTF-8')
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: 2021.10.8
cftime: 1.5.1
charset-normalizer: 2.0.7
ChimeraX-AddCharge: 1.1.4
ChimeraX-AddH: 2.1.10
ChimeraX-AlignmentAlgorithms: 2.0
ChimeraX-AlignmentHdrs: 3.2
ChimeraX-AlignmentMatrices: 2.0
ChimeraX-Alignments: 2.2.2
ChimeraX-AlphaFold: 1.0
ChimeraX-AltlocExplorer: 1.0.1
ChimeraX-AmberInfo: 1.0
ChimeraX-Arrays: 1.0
ChimeraX-Atomic: 1.30.2
ChimeraX-AtomicLibrary: 4.1.4
ChimeraX-AtomSearch: 2.0
ChimeraX-AtomSearchLibrary: 1.0
ChimeraX-AxesPlanes: 2.0
ChimeraX-BasicActions: 1.1
ChimeraX-BILD: 1.0
ChimeraX-BlastProtein: 2.0
ChimeraX-BondRot: 2.0
ChimeraX-BugReporter: 1.0
ChimeraX-BuildStructure: 2.6
ChimeraX-Bumps: 1.0
ChimeraX-BundleBuilder: 1.1
ChimeraX-ButtonPanel: 1.0
ChimeraX-CageBuilder: 1.0
ChimeraX-CellPack: 1.0
ChimeraX-Centroids: 1.2
ChimeraX-ChemGroup: 2.0
ChimeraX-Clashes: 2.1.1
ChimeraX-Clipper: 0.17.0
ChimeraX-ColorActions: 1.0
ChimeraX-ColorGlobe: 1.0
ChimeraX-ColorKey: 1.5
ChimeraX-CommandLine: 1.1.5
ChimeraX-ConnectStructure: 2.0
ChimeraX-Contacts: 1.0
ChimeraX-Core: 1.3.dev202110120902
ChimeraX-CoreFormats: 1.1
ChimeraX-coulombic: 1.3.1
ChimeraX-Crosslinks: 1.0
ChimeraX-Crystal: 1.0
ChimeraX-CrystalContacts: 1.0
ChimeraX-DataFormats: 1.2.2
ChimeraX-Dicom: 1.0
ChimeraX-DistMonitor: 1.1.5
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.1
ChimeraX-Hbonds: 2.1.1
ChimeraX-Help: 1.2
ChimeraX-HKCage: 1.3
ChimeraX-IHM: 1.1
ChimeraX-ImageFormats: 1.2
ChimeraX-IMOD: 1.0
ChimeraX-IO: 1.0.1
ChimeraX-ISOLDE: 1.3.dev32
ChimeraX-ItemsInspection: 1.0
ChimeraX-Label: 1.1
ChimeraX-LinuxSupport: 1.0
ChimeraX-ListInfo: 1.1.1
ChimeraX-Log: 1.1.4
ChimeraX-LookingGlass: 1.1
ChimeraX-Maestro: 1.8.1
ChimeraX-Map: 1.1
ChimeraX-MapData: 2.0
ChimeraX-MapEraser: 1.0
ChimeraX-MapFilter: 2.0
ChimeraX-MapFit: 2.0
ChimeraX-MapSeries: 2.1
ChimeraX-Markers: 1.0
ChimeraX-Mask: 1.0
ChimeraX-MatchMaker: 2.0.3
ChimeraX-MDcrds: 2.6
ChimeraX-MedicalToolbar: 1.0.1
ChimeraX-Meeting: 1.0
ChimeraX-MLP: 1.1
ChimeraX-mmCIF: 2.4
ChimeraX-MMTF: 2.1
ChimeraX-Modeller: 1.2.2
ChimeraX-ModelPanel: 1.2
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.2
ChimeraX-OpenCommand: 1.7
ChimeraX-PDB: 2.6.4
ChimeraX-PDBBio: 1.0
ChimeraX-PDBLibrary: 1.0.2
ChimeraX-PDBMatrices: 1.0
ChimeraX-Phenix: 0.3
ChimeraX-PickBlobs: 1.0
ChimeraX-Positions: 1.0
ChimeraX-PresetMgr: 1.0.1
ChimeraX-PubChem: 2.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-Sample: 0.1
ChimeraX-SaveCommand: 1.5
ChimeraX-SchemeMgr: 1.0
ChimeraX-SDF: 2.0
ChimeraX-Segger: 1.0
ChimeraX-Segment: 1.0
ChimeraX-SelInspector: 1.0
ChimeraX-SeqView: 2.4.4
ChimeraX-Shape: 1.0.1
ChimeraX-Shell: 1.0
ChimeraX-Shortcuts: 1.1
ChimeraX-ShowAttr: 1.0
ChimeraX-ShowSequences: 1.0
ChimeraX-SideView: 1.0
ChimeraX-Smiles: 2.1
ChimeraX-SmoothLines: 1.0
ChimeraX-SpaceNavigator: 1.0
ChimeraX-StdCommands: 1.6
ChimeraX-STL: 1.0
ChimeraX-Storm: 1.0
ChimeraX-StructMeasure: 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.1
ChimeraX-ToolshedUtils: 1.2
ChimeraX-Tug: 1.0
ChimeraX-UI: 1.13.4
ChimeraX-uniprot: 2.2
ChimeraX-UnitCell: 1.0
ChimeraX-ViewDockX: 1.0.1
ChimeraX-VIPERdb: 1.0
ChimeraX-Vive: 1.1
ChimeraX-VolumeMenu: 1.0
ChimeraX-Voyager: 0.1
ChimeraX-VTK: 1.0
ChimeraX-WavefrontOBJ: 1.0
ChimeraX-WebCam: 1.0
ChimeraX-WebServices: 1.0
ChimeraX-Zone: 1.0
colorama: 0.4.4
cxservices: 1.1
cycler: 0.10.0
Cython: 0.29.24
decorator: 5.1.0
distro: 1.6.0
docutils: 0.17.1
filelock: 3.0.12
funcparserlib: 0.3.6
grako: 3.16.5
h5py: 3.4.0
html2text: 2020.1.16
idna: 3.2
ihm: 0.21
imagecodecs: 2021.4.28
imagesize: 1.2.0
ipykernel: 5.5.5
ipython: 7.23.1
ipython-genutils: 0.2.0
jedi: 0.18.0
Jinja2: 3.0.1
jsonpickle: 2.0.0
jupyter-client: 6.1.12
jupyter-core: 4.8.1
kiwisolver: 1.3.2
line-profiler: 3.3.0
lxml: 4.6.3
lz4: 3.1.3
MarkupSafe: 2.0.1
matplotlib: 3.4.3
matplotlib-inline: 0.1.3
msgpack: 1.0.2
netCDF4: 1.5.7
networkx: 2.6.2
numexpr: 2.7.3
numpy: 1.21.2
openvr: 1.16.801
packaging: 21.0
ParmEd: 3.2.0
parso: 0.8.2
pexpect: 4.8.0
pickleshare: 0.7.5
Pillow: 8.3.2
pip: 21.2.4
pkginfo: 1.7.1
prompt-toolkit: 3.0.20
psutil: 5.8.0
ptyprocess: 0.7.0
pycollada: 0.7.1
pydicom: 2.1.2
Pygments: 2.10.0
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.2
python-igraph: 0.9.6
pytz: 2021.3
pyvis: 0.1.9
pyzmq: 22.3.0
qtconsole: 5.1.1
QtPy: 1.11.2
RandomWords: 0.3.0
rdkit-pypi: 2021.3.5.1
requests: 2.26.0
scipy: 1.7.1
setuptools: 57.5.0
sfftk-rw: 0.7.1
six: 1.16.0
snowballstemmer: 2.1.0
sortedcontainers: 2.4.0
Sphinx: 4.2.0
sphinx-autodoc-typehints: 1.12.0
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
texttable: 1.6.4
tifffile: 2021.4.8
tinyarray: 1.2.3
tornado: 6.1
traitlets: 5.1.0
urllib3: 1.26.7
wcwidth: 0.2.5
webcolors: 1.11.1
wheel: 0.37.0
wheel-filename: 1.3.0
Change History (5)
comment:1 by , 4 years ago
| Cc: | added |
|---|---|
| Component: | Unassigned → Input/Output |
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → accepted |
| Summary: | ChimeraX bug report submission → metadata interchange |
comment:2 by , 4 years ago
| Status: | accepted → feedback |
|---|
comment:3 by , 3 years ago
Okay, I have made PDB files write a CRYST1 record based on mmCIF metadata if there is no pre-existing CRYST1 record. Is this good enough, or does the reverse also need to happen (and/or other record types also)?
follow-up: 4 comment:4 by , 3 years ago
Thanks for doing this! Yes - it would be ideal if you could also do the reverse. The cell and symmetry information are the only things important to me right now. On Thu, Mar 2, 2023 at 1:57 AM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:
comment:5 by , 8 months ago
| Description: | modified (diff) |
|---|
Okay, now the reverse has been implemented -- the 'cell' and 'symmetry' tables are cobbled together if the metadata is in PDB format. Leaving this ticket open since it's really for all the metadata and we've only done CRYST1 and its equivalent tables, but no further work will happen here until another metadata-tranalation need has been identified.
Fix: https://github.com/RBVI/ChimeraX/commit/cc0c07f13489f0d1e495d72cba3f3270d9e740eb
I think this is too big a job and too narrow a use case to be worth the effort to implement the general-case solution. Practically speaking, we should identify the headers actually needed here and prioritize which ones get translated in the file writers first. So, CRYST1. What else?