Load MD atom subsets
The following bug report has been submitted:
Platform: Linux-6.8.0-59-generic-x86_64-with-glibc2.35
ChimeraX Version: 1.10.dev202504300222 (2025-04-30 02:22:20 UTC)
Description
Playing around with "real" (i.e. equilibrium) MD for the first time in a while... looks like it might be a fairly easy value-add to provide the ability to load from a DCD using only a subset of coordinates (e.g. protein only). Taking a quick look at the code for this, looks like you could do something like modify the command to add an optional "subset {sel}" argument. If that's used, then you could:
- store the indices of the selection in the original model
- create a new model from the selection, ensuring the atoms remain in the same order as in the original
- pass the new model and indices through to `_set_model_dcd_coordinates()` at https://github.com/RBVI/ChimeraX/blob/3176f3cf0ad4d0a2d49dcd2efea2872160ce4a12/src/bundles/md_crds/src/read_coords.py#L93 with `indices` as a new optional argument there
- if `indices` is used, modify the sanity check accordingly
- if `indices` is used, modify https://github.com/RBVI/ChimeraX/blob/3176f3cf0ad4d0a2d49dcd2efea2872160ce4a12/src/bundles/md_crds/src/read_coords.py#L109 from
{{{
model.add_coordset(base+num_frames, asarray(dcd[i], float64, order = 'C'))
}}}
to
{{{
model.add_coordset(base+num_frames, asarray(dcd[i], float64, order = 'C')[indices])
}}}
....?
Secondary issue: turns out opening trajectories like this is a *very* easy way to quickly chew up all your system memory and kill the ChimeraX session. How challenging would it be to do a check on projected memory use before loading, and warn the user if they're likely to run out?
OpenGL version: 3.3.0 NVIDIA 535.230.02
OpenGL renderer: NVIDIA GeForce RTX 3070/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Python: 3.11.4
Locale: en_GB.UTF-8
Qt version: PyQt6 6.8.1, Qt 6.8.2
Qt runtime version: 6.8.2
Qt platform: xcb
XDG_SESSION_TYPE=x11
DESKTOP_SESSION=ubuntu
XDG_SESSION_DESKTOP=ubuntu
XDG_CURRENT_DESKTOP=ubuntu:GNOME
DISPLAY=:1
Manufacturer: Dell Inc.
Model: XPS 8950
OS: Ubuntu 22.04
Architecture: 64bit ELF
Virtual Machine: none
CPU: 20 12th Gen Intel(R) Core(TM) i7-12700
Cache Size: 25600 KB
Memory:
total used free shared buff/cache available
Mem: 31Gi 10Gi 532Mi 381Mi 19Gi 19Gi
Swap: 2.0Gi 658Mi 1.4Gi
Graphics:
0000:01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3070 Lite Hash Rate] [10de:2488] (rev a1)
Subsystem: Dell GA104 [GeForce RTX 3070 Lite Hash Rate] [1028:c903]
Kernel driver in use: nvidia
Installed Packages:
alabaster: 1.0.0
appdirs: 1.4.4
asttokens: 3.0.0
auditwheel: 6.3.0
babel: 2.17.0
beautifulsoup4: 4.13.3
blockdiag: 3.0.0
blosc2: 3.3.1
build: 1.2.2.post1
certifi: 2025.4.26
cftime: 1.6.4.post1
charset-normalizer: 3.4.1
ChimeraX-AddCharge: 1.5.18
ChimeraX-AddH: 2.2.7
ChimeraX-AlignmentAlgorithms: 2.0.2
ChimeraX-AlignmentHdrs: 3.6.1
ChimeraX-AlignmentMatrices: 2.1
ChimeraX-Alignments: 2.20.1
ChimeraX-AlphaFold: 1.0.1
ChimeraX-AltlocExplorer: 1.1.2
ChimeraX-AmberInfo: 1.0
ChimeraX-Aniso: 1.1.3
ChimeraX-Arrays: 1.1
ChimeraX-Atomic: 1.60.5
ChimeraX-AtomicLibrary: 14.1.17
ChimeraX-AtomSearch: 2.0.1
ChimeraX-AxesPlanes: 2.4
ChimeraX-BasicActions: 1.1.3
ChimeraX-BILD: 1.0
ChimeraX-BlastProtein: 3.0.0
ChimeraX-Boltz: 1.0
ChimeraX-BondRot: 2.0.4
ChimeraX-BugReporter: 1.0.2
ChimeraX-BuildStructure: 2.13.1
ChimeraX-Bumps: 1.0
ChimeraX-BundleBuilder: 1.4.0
ChimeraX-ButtonPanel: 1.0.1
ChimeraX-CageBuilder: 1.0.1
ChimeraX-CellPack: 1.0
ChimeraX-Centroids: 1.4
ChimeraX-ChangeChains: 1.1
ChimeraX-CheckWaters: 1.4
ChimeraX-ChemGroup: 2.0.2
ChimeraX-Clashes: 2.3
ChimeraX-Clipper: 0.25.0
ChimeraX-ColorActions: 1.0.5
ChimeraX-ColorGlobe: 1.0
ChimeraX-ColorKey: 1.5.8
ChimeraX-CommandLine: 1.2.6
ChimeraX-ConnectStructure: 2.0.1
ChimeraX-Contacts: 1.0.1
ChimeraX-Core: 1.10.dev202504300222
ChimeraX-CoreFormats: 1.2
ChimeraX-coulombic: 1.4.5
ChimeraX-Crosslinks: 1.0
ChimeraX-Crystal: 1.0
ChimeraX-CrystalContacts: 1.0.1
ChimeraX-DataFormats: 1.2.4
ChimeraX-Dicom: 1.2.7
ChimeraX-DistMonitor: 1.4.2
ChimeraX-DockPrep: 1.1.4
ChimeraX-Dssp: 2.0
ChimeraX-EMDB-SFF: 1.0
ChimeraX-ESMFold: 1.0
ChimeraX-FileHistory: 1.0.1
ChimeraX-FunctionKey: 1.0.1
ChimeraX-Geometry: 1.3
ChimeraX-gltf: 1.0
ChimeraX-Graphics: 1.4.1
ChimeraX-Hbonds: 2.5.1
ChimeraX-Help: 1.3
ChimeraX-HKCage: 1.3
ChimeraX-IHM: 1.1
ChimeraX-ImageFormats: 1.2
ChimeraX-IMOD: 1.0
ChimeraX-IO: 1.0.3
ChimeraX-ISOLDE: 1.10rc0
ChimeraX-ItemsInspection: 1.0.1
ChimeraX-IUPAC: 1.0
ChimeraX-KVFinder: 1.6.1
ChimeraX-Label: 1.1.14
ChimeraX-LinuxSupport: 1.0.1
ChimeraX-ListInfo: 1.2.2
ChimeraX-Log: 1.2
ChimeraX-LookingGlass: 1.1
ChimeraX-Maestro: 1.9.1
ChimeraX-Map: 1.3
ChimeraX-MapData: 2.0
ChimeraX-MapEraser: 1.0.1
ChimeraX-MapFilter: 2.0.1
ChimeraX-MapFit: 2.0
ChimeraX-MapSeries: 2.1.1
ChimeraX-Markers: 1.0.1
ChimeraX-Mask: 1.0.2
ChimeraX-MatchMaker: 2.2.1
ChimeraX-MCopy: 1.0
ChimeraX-MDcrds: 2.10.1
ChimeraX-MedicalToolbar: 1.1
ChimeraX-Meeting: 1.0.1
ChimeraX-MLP: 1.1.1
ChimeraX-mmCIF: 2.16
ChimeraX-MMTF: 2.2
ChimeraX-ModelArchive: 1.0
ChimeraX-Modeller: 1.5.19
ChimeraX-ModelPanel: 1.5.1
ChimeraX-ModelSeries: 1.0.1
ChimeraX-Mol2: 2.0.3
ChimeraX-Mole: 1.0
ChimeraX-Morph: 1.0.2
ChimeraX-MouseModes: 1.2
ChimeraX-Movie: 1.0
ChimeraX-MutationScores: 1.0
ChimeraX-Neuron: 1.0
ChimeraX-Nifti: 1.2
ChimeraX-NMRSTAR: 1.0.2
ChimeraX-NRRD: 1.2
ChimeraX-Nucleotides: 2.0.3
ChimeraX-OpenCommand: 1.14.1
ChimeraX-OrthoPick: 1.0.1
ChimeraX-PDB: 2.7.9
ChimeraX-PDBBio: 1.0.1
ChimeraX-PDBLibrary: 1.0.4
ChimeraX-PDBMatrices: 1.0
ChimeraX-PickBlobs: 1.0.1
ChimeraX-Positions: 1.0
ChimeraX-PresetMgr: 1.1.3
ChimeraX-ProfileGrids: 1.1.1
ChimeraX-PubChem: 2.2
ChimeraX-ReadPbonds: 1.0.1
ChimeraX-Registration: 1.1.2
ChimeraX-RemoteControl: 1.0
ChimeraX-RenderByAttr: 1.6.3
ChimeraX-RenumberResidues: 1.1
ChimeraX-ResidueFit: 1.0.1
ChimeraX-RestServer: 1.3.1
ChimeraX-RNALayout: 1.0
ChimeraX-RotamerLibMgr: 4.0
ChimeraX-RotamerLibsDunbrack: 2.0
ChimeraX-RotamerLibsDynameomics: 2.0
ChimeraX-RotamerLibsRichardson: 2.0
ChimeraX-SaveCommand: 1.5.1
ChimeraX-SchemeMgr: 1.0
ChimeraX-SDF: 2.0.3
ChimeraX-Segger: 1.0
ChimeraX-Segment: 1.0.1
ChimeraX-Segmentations: 3.5.7
ChimeraX-SelInspector: 1.0
ChimeraX-SeqView: 2.17.1
ChimeraX-Shape: 1.1
ChimeraX-Shell: 1.0.1
ChimeraX-Shortcuts: 1.2.0
ChimeraX-ShowSequences: 1.0.3
ChimeraX-SideView: 1.0.1
ChimeraX-SimilarStructures: 1.0.1
ChimeraX-Smiles: 2.1.2
ChimeraX-SmoothLines: 1.0
ChimeraX-SpaceNavigator: 1.0
ChimeraX-StdCommands: 1.19.1
ChimeraX-STL: 1.0.1
ChimeraX-Storm: 1.0
ChimeraX-StructMeasure: 1.2.1
ChimeraX-Struts: 1.0.1
ChimeraX-Surface: 1.0.1
ChimeraX-SwapAA: 2.0.1
ChimeraX-SwapRes: 2.5.2
ChimeraX-TapeMeasure: 1.0
ChimeraX-TaskManager: 1.0
ChimeraX-Test: 1.0
ChimeraX-Toolbar: 1.2.3
ChimeraX-ToolshedUtils: 1.2.4
ChimeraX-Topography: 1.0
ChimeraX-ToQuest: 1.0
ChimeraX-Tug: 1.0.1
ChimeraX-UI: 1.45.1
ChimeraX-Umap: 1.0
ChimeraX-uniprot: 2.3.1
ChimeraX-UnitCell: 1.0.1
ChimeraX-ViewDockX: 1.4.4
ChimeraX-VIPERdb: 1.0
ChimeraX-Vive: 1.1
ChimeraX-VolumeMenu: 1.0.1
ChimeraX-vrml: 1.0
ChimeraX-VTK: 1.0
ChimeraX-WavefrontOBJ: 1.0
ChimeraX-WebCam: 1.0.2
ChimeraX-WebServices: 1.1.4
ChimeraX-Zone: 1.0.1
colorama: 0.4.6
comm: 0.2.2
contourpy: 1.3.2
coverage: 7.8.0
cxservices: 1.2.3
cycler: 0.12.1
Cython: 3.0.12
debugpy: 1.8.14
decorator: 5.2.1
distro: 1.9.0
docutils: 0.21.2
executing: 2.2.0
filelock: 3.18.0
fonttools: 4.57.0
funcparserlib: 2.0.0a0
glfw: 2.9.0
grako: 3.16.5
h5py: 3.13.0
html2text: 2024.2.26
idna: 3.10
ihm: 2.2
imagecodecs: 2024.6.1
imagesize: 1.4.1
iniconfig: 2.1.0
ipykernel: 6.29.5
ipython: 8.26.0
ipywidgets: 8.1.6
jedi: 0.19.1
Jinja2: 3.1.6
jupyter_client: 8.6.3
jupyter_core: 5.7.2
jupyterlab_widgets: 3.0.14
kiwisolver: 1.4.8
line_profiler: 4.2.0
lxml: 5.3.1
lz4: 4.4.4
MarkupSafe: 3.0.2
matplotlib: 3.10.1
matplotlib-inline: 0.1.7
msgpack: 1.1.0
ndindex: 1.9.2
nest-asyncio: 1.6.0
netCDF4: 1.6.5
networkx: 3.3
nibabel: 5.2.0
nptyping: 2.5.0
numexpr: 2.10.2
numpy: 1.26.4
OpenMM: 8.1.1
OpenMM: 8.2.0
openmm-cuda: 8.1.1.11.8
openvr: 1.26.701
packaging: 24.2
ParmEd: 4.2.2
parso: 0.8.4
pep517: 0.13.1
pexpect: 4.9.0
pickleshare: 0.7.5
pillow: 10.4.0
pip: 25.0.1
pkginfo: 1.11.1
platformdirs: 4.3.7
pluggy: 1.5.0
prompt_toolkit: 3.0.51
psutil: 7.0.0
ptyprocess: 0.7.0
pure_eval: 0.2.3
py-cpuinfo: 9.0.0
pycollada: 0.8
pydicom: 2.4.4
pyelftools: 0.32
Pygments: 2.18.0
pynmrstar: 3.3.5
pynrrd: 1.0.0
PyOpenGL: 3.1.9
PyOpenGL-accelerate: 3.1.9
pyopenxr: 1.1.4501
pyparsing: 3.2.3
pyproject_hooks: 1.2.0
PyQt6: 6.8.1
PyQt6-Qt6: 6.8.2
PyQt6-WebEngine: 6.8.0
PyQt6-WebEngine-Qt6: 6.8.2
PyQt6_sip: 13.10.0
pytest: 8.3.5
pytest-cov: 6.1.1
python-dateutil: 2.9.0.post0
pytz: 2025.2
pyzmq: 26.4.0
qtconsole: 5.5.2
QtPy: 2.4.3
qtshim: 1.1
RandomWords: 0.4.0
requests: 2.32.3
roman-numerals-py: 3.1.0
scipy: 1.14.0
setuptools: 78.1.0
sfftk-rw: 0.8.1
six: 1.16.0
snowballstemmer: 2.2.0
sortedcontainers: 2.4.0
soupsieve: 2.7
Sphinx: 8.2.3
sphinx-autodoc-typehints: 3.1.0
sphinxcontrib-applehelp: 2.0.0
sphinxcontrib-blockdiag: 3.0.0
sphinxcontrib-devhelp: 2.0.0
sphinxcontrib-htmlhelp: 2.1.0
sphinxcontrib-jsmath: 1.0.1
sphinxcontrib-qthelp: 2.0.0
sphinxcontrib-serializinghtml: 2.0.0
stack-data: 0.6.3
superqt: 0.7.1
tables: 3.10.2
tcia_utils: 1.5.1
tifffile: 2025.3.13
tinyarray: 1.2.4
tornado: 6.4.2
traitlets: 5.14.3
typing_extensions: 4.13.2
tzdata: 2025.2
urllib3: 2.4.0
wcwidth: 0.2.13
webcolors: 24.11.1
wheel: 0.45.1
wheel-filename: 1.4.2
widgetsnbextension: 4.0.14
Change History
(2)
| Component: |
Unassigned → MD/Ensemble Analysis
|
| Owner: |
set to Eric Pettersen
|
| Platform: |
→ all
|
| Project: |
→ ChimeraX
|
| Status: |
new → accepted
|
| Summary: |
ChimeraX bug report submission → Load MD atom subsets
|
| Type: |
defect → enhancement
|
| Resolution: |
→ fixed
|
| Status: |
accepted → closed
|
Decided to go with a variant of this suggestion, since it would be awkward to evaluate a selection on a model that doesn't yet exist (e.g. a PSF+DCD combo). Instead, you can specify an "omit" keyword that takes one or more structure categories (main, ligand, ions, solvent) to omit from the trajectory reading (which is easy to evaluate once one frame has been read).
Change: https://github.com/RBVI/ChimeraX/commit/f31ad506359afc430f7b6302355d0258368e8865