Opened 4 years ago
Last modified 4 years ago
#6034 accepted enhancement
Jupyter notebooks
Reported by: | Tristan Croll | Owned by: | pett |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Core | Version: | |
Keywords: | Cc: | chimera-programmers | |
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.3rc202112030319 (2021-12-03 03:19:12 UTC) Description I've been working through some tutorials on various subjects implemented as Jupyter notebooks, and I have to say I've been pretty impressed by them (examples under the Tutorials heading at https://mml-book.github.io/). It got me wondering... would it be feasible for ChimeraX to spin up a Jupyter server, and run notebooks through its own help browser? The result could make a wonderful stepping stone for the "power users" to go from the command interface to Python scripting to active development: in the same page you could, for example, provide a cxcmd: link *and* the working, adjustable code to achieve the same from a Python script. Or show how to add and remove a callback to the "new frame" or "changes" trigger... perform some analysis of atomic coordinates/properties... etc. I could see myself using it to demonstrate some advanced uses of ISOLDE's restraints - there are many more potential uses of these than what I've exposed to the interface so far (primarily because doing so in a user-friendly way will be rather tricky), and probably quite a few that I haven't even thought of yet. Giving examples for people to play with could be a great way to awaken some creative ideas. OpenGL version: 3.3.0 NVIDIA 497.29 OpenGL renderer: NVIDIA GeForce RTX 2080/PCIe/SSE2 OpenGL vendor: NVIDIA Corporation Manufacturer: Notebook Model: P7xxTM1 OS: Microsoft Windows 10 Education (Build 19041) Memory: 68,654,501,888 MaxProcessMemory: 137,438,953,344 CPU: 16 Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz OSLanguage: en-GB Locale: ('en_GB', 'cp1252') PyQt5 5.15.2, Qt 5.15.2 Installed Packages: -: imerax-clipper -himerax-clipper: 0.17.0 -himerax-isolde: 1.3.dev33 absl-py: 1.0.0 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.1 charset-normalizer: 2.0.8 ChimeraX-AddCharge: 1.2.2 ChimeraX-AddH: 2.1.11 ChimeraX-AlignmentAlgorithms: 2.0 ChimeraX-AlignmentHdrs: 3.2 ChimeraX-AlignmentMatrices: 2.0 ChimeraX-Alignments: 2.2.3 ChimeraX-AlphaFold: 1.0 ChimeraX-AltlocExplorer: 1.0.1 ChimeraX-AmberInfo: 1.0 ChimeraX-Arrays: 1.0 ChimeraX-Atomic: 1.31 ChimeraX-AtomicLibrary: 4.2 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.1 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.2.2 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.3rc202112030319 ChimeraX-CoreFormats: 1.1 ChimeraX-coulombic: 1.3.2 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-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.1 ChimeraX-Hbonds: 2.1.2 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 ChimeraX-ItemsInspection: 1.0 ChimeraX-Label: 1.1 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.4 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.6 ChimeraX-ModelPanel: 1.2.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.2 ChimeraX-OpenCommand: 1.7 ChimeraX-PDB: 2.6.5 ChimeraX-PDBBio: 1.0 ChimeraX-PDBLibrary: 1.0.2 ChimeraX-PDBMatrices: 1.0 ChimeraX-PickBlobs: 1.0 ChimeraX-Positions: 1.0 ChimeraX-PresetMgr: 1.0.1 ChimeraX-PubChem: 2.1 ChimeraX-ReadPbonds: 1.0.1 ChimeraX-Registration: 1.1 ChimeraX-RemoteControl: 1.0 ChimeraX-ResidueFit: 1.0 ChimeraX-RestServer: 1.1 ChimeraX-RNALayout: 1.0 ChimeraX-RotamerLibMgr: 2.0.1 ChimeraX-RotamerLibsDunbrack: 2.0 ChimeraX-RotamerLibsDynameomics: 2.0 ChimeraX-RotamerLibsRichardson: 2.0 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.6 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.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.1 ChimeraX-ToolshedUtils: 1.2 ChimeraX-Tug: 1.0 ChimeraX-UI: 1.13.7 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-VTK: 1.0 ChimeraX-WavefrontOBJ: 1.0 ChimeraX-WebCam: 1.0 ChimeraX-WebServices: 1.0 ChimeraX-Zone: 1.0 colorama: 0.4.4 comtypes: 1.1.10 cxservices: 1.1 cycler: 0.11.0 Cython: 0.29.24 decorator: 5.1.0 docutils: 0.17.1 filelock: 3.0.12 flatbuffers: 2.0 funcparserlib: 0.3.6 grako: 3.16.5 h5py: 3.6.0 html2text: 2020.1.16 idna: 3.3 ihm: 0.21 imagecodecs: 2021.4.28 imagesize: 1.3.0 ipykernel: 5.5.5 ipython: 7.23.1 ipython-genutils: 0.2.0 jax: 0.2.27 jaxlib: 0.1.75 jedi: 0.18.0 Jinja2: 3.0.1 jupyter-client: 6.1.12 jupyter-core: 4.9.1 kiwisolver: 1.3.2 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.3 numexpr: 2.8.0 numpy: 1.21.2 openvr: 1.16.801 opt-einsum: 3.3.0 packaging: 21.3 ParmEd: 3.4.3 parso: 0.8.3 pickleshare: 0.7.5 Pillow: 8.3.2 pip: 21.2.4 pkginfo: 1.7.1 prompt-toolkit: 3.0.23 psutil: 5.8.0 pycollada: 0.7.1 pydicom: 2.1.2 Pygments: 2.10.0 PyOpenGL: 3.1.5 PyOpenGL-accelerate: 3.1.5 pyparsing: 3.0.6 PyQt5-commercial: 5.15.2 PyQt5-sip: 12.8.1 PyQtWebEngine-commercial: 5.15.2 python-dateutil: 2.8.2 python-igraph: 0.9.7 pytz: 2021.3 pywin32: 228 pyzmq: 22.3.0 qtconsole: 5.1.1 QtPy: 1.11.2 RandomWords: 0.3.0 requests: 2.26.0 scipy: 1.7.1 setuptools: 57.5.0 sfftk-rw: 0.7.1 six: 1.16.0 snowballstemmer: 2.2.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.1 typing-extensions: 4.0.1 urllib3: 1.26.7 versioneer: 0.21 wcwidth: 0.2.5 webcolors: 1.11.1 wheel: 0.37.0 wheel-filename: 1.3.0 WMI: 1.5.1
Change History (6)
comment:2 by , 4 years ago
Cc: | added |
---|---|
Component: | Unassigned → Core |
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → accepted |
Summary: | ChimeraX bug report submission → Jupyter notebooks |
Type: | defect → enhancement |
comment:3 by , 4 years ago
I don't know, is it possible? I think the stumbling block is that the Python shell we provide needs access to ChimeraX's Python and therefore uses an in-process kernel. See https://www.rbvi.ucsf.edu/pipermail/chimerax-users/2020-June/001200.html . I'm no expert, so if you know a way to get it to work I'm all ears.
--Eric
comment:4 by , 4 years ago
Jupyter notebook ChimeraX support could be pretty cool. I could see the chimerax-recipes script examples (https://rbvi.github.io/chimerax-recipes/) instead being presented as notebooks which would allow easier tinkering with them.
Google's AlphaFold notebook is another example where tinkering with the code can be interesting.
But none of the Jupyter notebook examples I have used involve a simultaneously running GUI application. Instead they run a bit of Python code and create Matplotlib graphs or heat plots in the notebook for visualizations. Do you know of any example where a notebook controls a GUI application? If you lose the 3D view of the ChimeraX app it gets a lot less interesting. We have CZI funding to make a PyPi or Conda package for ChimeraX for non-gui uses so I expect that to exist, probably late this year (funding runs from Aug 2021 for 2 years), and it would probably be practical to use that chimerax module in a Jupyter notebook.
comment:5 by , 4 years ago
My previous comment presumed you were thinking the Jupyter notebook would run in a normal browser like FireFox, Chrome, Safari connecting to a Jupyter server that supports running ChimeraX python code. But maybe you meant just that you want the ChimeraX shell to be Jupyter notebook. The current ChimeraX Shell tool says "Jupyter QtConsole 5.2.2" at the top. Eric, does it support opening a Jupyter notebook with cells containing code from a *.ipynb file? And editing those cells and running them? I always wondered this. It has the "In [1]", "Out [1]", "In [2]", "Out [2]", ... format of a notebook but not the controls I normally see to collapse code cells or rerun them.
follow-up: 6 comment:6 by , 4 years ago
Well, I was thinking specifically about the ChimeraX help window - but if it ran in that I suppose it would run in any browser. The advantage of the former would be that it could also incorporate ChimeraX commands as links. Anyway, I did some digging around and it seems while it's technically possible, the built in IPython support for it is only implemented for PyQt4. See the second-last page of of https://qtconsole.readthedocs.io/_/downloads/en/stable/pdf/ (section 10.1), which points to the example code at https://github.com/ipython/ipykernel/blob/main/examples/embedding/ipkernel_qtapp.py (basically it requires replacing the call to app.exec_() with a custom function that incorporates the kernel into the event loop). You'd think that the in-process kernel would also be capable of listening for requests from another process, but that doesn't appear to have been implemented. No idea how advisable it would be to have two separate ipython kernels running in the same app... ________________________________ From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> Sent: 28 January 2022 02:25 Cc: chimera-programmers@cgl.ucsf.edu <chimera-programmers@cgl.ucsf.edu>; pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk> Subject: Re: [ChimeraX] #6034: Jupyter notebooks #6034: Jupyter notebooks ------------------------------------+---------------------- Reporter: Tristan Croll | Owner: pett Type: enhancement | Status: accepted Priority: normal | Milestone: Component: Core | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ------------------------------------+---------------------- Comment (by Tom Goddard): My previous comment presumed you were thinking the Jupyter notebook would run in a normal browser like FireFox, Chrome, Safari connecting to a Jupyter server that supports running ChimeraX python code. But maybe you meant just that you want the ChimeraX shell to be Jupyter notebook. The current ChimeraX Shell tool says "Jupyter QtConsole 5.2.2" at the top. Eric, does it support opening a Jupyter notebook with cells containing code from a *.ipynb file? And editing those cells and running them? I always wondered this. It has the "In [1]", "Out [1]", "In [2]", "Out [2]", ... format of a notebook but not the controls I normally see to collapse code cells or rerun them. -- Ticket URL: <https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/6034#comment:5> ChimeraX <https://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker