Opened 6 years ago
Closed 5 years ago
#2672 closed defect (fixed)
Toolshed down
Reported by: | Owned by: | Conrad Huang | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Tool Shed | Version: | |
Keywords: | Cc: | chimera-programmers, Tristan Croll | |
Blocked By: | Blocking: | ||
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description
The following bug report has been submitted: Platform: Windows-10-10.0.17763 ChimeraX Version: 0.91 (2019-12-10) Description Hi Tom, Thanks for implementing ISOLDE tugging in VR. This is going to be a really awesome feature. I think at the moment I am happy with the rotations being performed while ISOLDE is paused but it would indeed be great if there was solution for this that would work during ISOLDE simulation. However, when I replaced the isolde.py and tugging.py I get an error message, which you can find in the log. And then ISOLDE is not fully loading. I think I may have dev 6 of ISOLDE, instead of dev 8 that you have used for editing the files. I tried to update to dev 8 but I cannot connect to the toolshed page withing the ChimeraX browser because the certificate expired. I downloaded the whl file separately but I am not sure how to install it in ChimeraX from command line. I have uodated CHimeraX to the daily build. Hopefully, the error will disappear when I update to ISOLDE 1.0b3.dev8 but I thought I let you know in case the problem is not related to that. Thanks. Best, Józef Log: UCSF ChimeraX version: 0.91 (2019-12-10) © 2016-2019 Regents of the University of California. All rights reserved. How to cite UCSF ChimeraX > open d:\data\Projects\TycACOM\TycACOM-TycC1CK9D-ISOLDE.pdb format PDB Summary of feedback from opening d:\data\Projects\TycACOM\TycACOM- TycC1CK9D-ISOLDE.pdb --- warnings | Ignored bad PDB record found on line 1 REMARK FILENAME="complex_5w.pdb0" Ignored bad PDB record found on line 2 REMARK =============================================================== Ignored bad PDB record found on line 3 REMARK HADDOCK run for complex Ignored bad PDB record found on line 4 REMARK initial structure: complex_5.pdb Ignored bad PDB record found on line 5 REMARK final NOE weights: unambig 50 amb: 50 31 messages similar to the above omitted Chain information for TycACOM-TycC1CK9D-ISOLDE.pdb #1 --- Chain | Description A | No description available B | No description available > toolshed show ISOLDE > set selectionWidth 4 Traceback (most recent call last): File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\core\toolshed\info.py", line 627, in start_tool ti = api._api_caller.start_tool(api, session, self, tool_info) File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\core\toolshed\\__init__.py", line 1612, in start_tool return cls._get_func(api, "start_tool")(session, ti.name) File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\isolde\\__init__.py", line 48, in start_tool return tools.get_singleton(session, ISOLDE_ToolUI, 'ISOLDE', create=True) File "D:\Program Files\ChimeraX\bin\lib\site-packages\chimerax\core\tools.py", line 214, in get_singleton tinst = tool_class(session, tool_name, **kw) File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\isolde\tool.py", line 168, in __init__ self.isolde = isolde.Isolde(self) File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\isolde\isolde.py", line 253, in __init__ self._start_gui(gui) File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\isolde\isolde.py", line 375, in _start_gui self._populate_menus_and_update_params() File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\isolde\isolde.py", line 436, in _populate_menus_and_update_params from .tutorials import populate_tutorial_combo_box ModuleNotFoundError: No module named 'chimerax.isolde.tutorials' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\Program Files\ChimeraX\bin\lib\site-packages\chimerax\ui\gui.py", line 1315, in <lambda> run(ses, "toolshed show %s" % StringArg.unparse(tool_name))) File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\core\commands\run.py", line 31, in run results = command.run(text, log=log) File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\core\commands\cli.py", line 2837, in run result = ci.function(session, **kw_args) File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\core\commands\toolshed.py", line 339, in toolshed_show bi.start_tool(session, name) File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\core\toolshed\info.py", line 633, in start_tool "start_tool() failed for tool %s in bundle %s:\n%s" % (tool_name, self.name, str(e))) chimerax.core.toolshed.ToolshedError: start_tool() failed for tool ISOLDE in bundle ChimeraX-ISOLDE: No module named 'chimerax.isolde.tutorials' chimerax.core.toolshed.ToolshedError: start_tool() failed for tool ISOLDE in bundle ChimeraX-ISOLDE: No module named 'chimerax.isolde.tutorials' File "D:\Program Files\ChimeraX\bin\lib\site- packages\chimerax\core\toolshed\info.py", line 633, in start_tool "start_tool() failed for tool %s in bundle %s:\n%s" % (tool_name, self.name, str(e))) See log for complete Python traceback. OpenGL version: 3.3.0 NVIDIA 418.91 OpenGL renderer: GeForce RTX 2080 Ti/PCIe/SSE2 OpenGL vendor: NVIDIA Corporation
Change History (29)
comment:1 by , 6 years ago
Cc: | added |
---|---|
Component: | Unassigned → Tool Shed |
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → Toolshed down |
comment:2 by , 6 years ago
Cc: | added |
---|
The error traceback that it cannot find module chimerax.isolde.tutorials is no doubt caused by the new isolde.py file I gave you trying to import a tutorials file that did not exist in your older copy of ISOLDE.
Did you keep the older isolde.py and tugging.py files so you can revert to a working ISOLDE (without VR)?
Unfortunately the toolshed is down because we let our https certificate expire for that web site and now we are slowly going through UCSF IT to try to get that certificate renewed. I'm not sure when that will happen, hopefully within a day or two.
If you get the ISOLDE and Clipper *.whl files from https://cxtoolshed.rbvi.ucsf.edu by allowing your web browser to ignore the expired certificate you can possibly install them but there are a lot of pitfalls -- I have done this before, but it might be better to wait for toolshed to start working. If you want to try you install from a windows command prompt or cygwin shell
chimerax/bin/ChimeraX.exe -m pip install clipperxxx.whl
chimerax/bin/ChimeraX.exe -m pip install isoldexxx.whl
That will need write permission on the chimerax install. Also if you already installed ISOLDE via toolshed with "just for me" then it was put in a place (/Users/yourusername/AppData/Local/UCSF/ChimeraX/0.91) that will take precedence over the one installed above from the command line. So you'd have to move that one so ChimeraX does not find it. You may then need to run command "toolshed reload" within ChimeraX to get it to locate the new ISOLDE -- I'm not sure.
I'll be making a new bug report that there has to be an easier backup way to install tools from .whl files when the toolshed web site is down.
follow-up: 3 comment:3 by , 6 years ago
Will get Tom’s changes integrated tomorrow, and put some updated builds on my Google Drive for now.
follow-up: 4 comment:4 by , 6 years ago
Fresh Windows builds are at: https://drive.google.com/open?id=1QxiBHpHLhWG8YppWYY5O0GSQ22yiufL_ and https://drive.google.com/open?id=1kYg3PZBOMKkyBInihC0XTqI6MuLByNxw Easiest way to install these is to start ChimeraX, then open the shell (Tools/General/Shell) and navigate to their directory (using Unix syntax - e.g. "cd ~/Downloads"). Then, on the command line (under the main GUI window, *not* in the shell): toolshed install ChimeraX_Clipper-0.10.0-cp37-cp37m-win_amd64.whl toolshed install ChimeraX_ISOLDE-1.0b4-cp37-cp37m-win_amd64.whl You'll need to restart ChimeraX before the new ISOLDE is usable. As well as Tom's add VR methods, you'll also get the first sneak peek at ISOLDE's new integration with session save/restore - saving and restoring a ChimeraX session should now bring back the model and all its restraints. Just don't try to restore a session while a simulation is running - I haven't accounted for that particular eventuality yet. On 2019-12-10 20:14, Tristan Croll wrote:
follow-up: 5 comment:5 by , 6 years ago
Hi Tristan, Thanks for making the new builds. You can change the current directory in ChimeraX with the cd command at the normal ChimeraX command line https://www.rbvi.ucsf.edu/chimerax/docs/user/commands/cd.html You do not need to use the shell for that. Tom
follow-up: 6 comment:6 by , 6 years ago
Epic. Thank you. When it works it is like magic. I was literally giddy. Quick question: any idea why sometimes ISOLDE does not want to run? I seem to be getting errors related to Isolde_ignore attribute. With one file I got the following error messages (I actually just checked and the pdb that was working before gives me an error now as well). I can get the simulations running only if I delete the ChimeraX Cache before I open ChimeraX. File "C:\Users\msskan\AppData\Local\UCSF\ChimeraX\0.91\site-packages\chimerax\isolde\isolde.py", line 2673, in _start_sim_or_toggle_pause self.start_sim() File "C:\Users\msskan\AppData\Local\UCSF\ChimeraX\0.91\site-packages\chimerax\isolde\isolde.py", line 2693, in start_sim self.params, self.sim_params, excluded_residues = self.ignored_residues) File "C:\Users\msskan\AppData\Local\UCSF\ChimeraX\0.91\site-packages\chimerax\isolde\isolde.py", line 344, in ignored_residues return Residues([r for r in m.residues if r.isolde_ignore]) File "C:\Users\msskan\AppData\Local\UCSF\ChimeraX\0.91\site-packages\chimerax\isolde\isolde.py", line 344, in <listcomp> return Residues([r for r in m.residues if r.isolde_ignore]) File "D:\Program Files\ChimeraX\bin\lib\site-packages\chimerax\atomic\attr_registration.py", line 39, in _getattr_ return look_in_class._attr_registration.get_attr(attr_name) File "D:\Program Files\ChimeraX\bin\lib\site-packages\chimerax\atomic\attr_registration.py", line 67, in get_attr raise AttributeError("'%s' object has no attribute '%s'" % (self.class_.__name__, attr_name)) from None AttributeError: 'Residue' object has no attribute 'isolde_ignore' AttributeError: 'Residue' object has no attribute 'isolde_ignore' File "D:\Program Files\ChimeraX\bin\lib\site-packages\chimerax\atomic\attr_registration.py", line 67, in get_attr raise AttributeError("'%s' object has no attribute '%s'" % (self.class_.__name__, attr_name)) from None Thanks, Józef On 11/12/2019, 16:58, "ChimeraX" <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: #2672: Toolshed down ----------------------------------------+-------------------------- Reporter: j.r.lewandowski@… | Owner: Conrad Huang Type: defect | Status: assigned Priority: normal | Milestone: Component: Tool Shed | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ----------------------------------------+-------------------------- Comment (by Tristan Croll): {{{ Fresh Windows builds are at: https://drive.google.com/open?id=1QxiBHpHLhWG8YppWYY5O0GSQ22yiufL_ and https://drive.google.com/open?id=1kYg3PZBOMKkyBInihC0XTqI6MuLByNxw Easiest way to install these is to start ChimeraX, then open the shell (Tools/General/Shell) and navigate to their directory (using Unix syntax - e.g. "cd ~/Downloads"). Then, on the command line (under the main GUI window, *not* in the shell): toolshed install ChimeraX_Clipper-0.10.0-cp37-cp37m-win_amd64.whl toolshed install ChimeraX_ISOLDE-1.0b4-cp37-cp37m-win_amd64.whl You'll need to restart ChimeraX before the new ISOLDE is usable. As well as Tom's add VR methods, you'll also get the first sneak peek at ISOLDE's new integration with session save/restore - saving and restoring a ChimeraX session should now bring back the model and all its restraints. Just don't try to restore a session while a simulation is running - I haven't accounted for that particular eventuality yet. On 2019-12-10 20:14, Tristan Croll wrote: }}} -- Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/2672#comment:4> ChimeraX <http://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
follow-up: 7 comment:7 by , 6 years ago
Hi Tristan, One more comment. You seem to have a similar problem as we have encountered with Tom when he implemented directional bond rotation. If one accidentally clicks not on the atom in VR (to select it for tugging) ChimeraX returns error and you have to restart VR to be able to do anything. I guess a similar solution as what Tom did would work (adding a line to return if nothing is clicked). Best, Józef On 11/12/2019, 16:58, "ChimeraX" <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: #2672: Toolshed down ----------------------------------------+-------------------------- Reporter: j.r.lewandowski@… | Owner: Conrad Huang Type: defect | Status: assigned Priority: normal | Milestone: Component: Tool Shed | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ----------------------------------------+-------------------------- Comment (by Tristan Croll): {{{ Fresh Windows builds are at: https://drive.google.com/open?id=1QxiBHpHLhWG8YppWYY5O0GSQ22yiufL_ and https://drive.google.com/open?id=1kYg3PZBOMKkyBInihC0XTqI6MuLByNxw Easiest way to install these is to start ChimeraX, then open the shell (Tools/General/Shell) and navigate to their directory (using Unix syntax - e.g. "cd ~/Downloads"). Then, on the command line (under the main GUI window, *not* in the shell): toolshed install ChimeraX_Clipper-0.10.0-cp37-cp37m-win_amd64.whl toolshed install ChimeraX_ISOLDE-1.0b4-cp37-cp37m-win_amd64.whl You'll need to restart ChimeraX before the new ISOLDE is usable. As well as Tom's add VR methods, you'll also get the first sneak peek at ISOLDE's new integration with session save/restore - saving and restoring a ChimeraX session should now bring back the model and all its restraints. Just don't try to restore a session while a simulation is running - I haven't accounted for that particular eventuality yet. On 2019-12-10 20:14, Tristan Croll wrote: }}} -- Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/2672#comment:4> ChimeraX <http://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
follow-up: 9 comment:9 by , 6 years ago
‘Isolde_ignore’ is a custom attribute I add to `Residue`. It’s registered by a method in ISOLDE’s bundle initialisation, so it *should* happen first thing on ChimeraX startup. Tom - any ideas? The code is in ISOLDE’s top-level __init__.py. Will add the fix for when you don’t grab an atom.
follow-up: 10 comment:10 by , 6 years ago
I haven't looked at your latest wheels so I don't know what your registration code looks like (would be good if it were on github so I could take a quick look). I am taking my cat to the vet for a leg problem today so may not have a chance to look. I don't think registering an attribute actually creates that attribute. I think it might just assure that the attribute is saved in sessions.
comment:11 by , 6 years ago
If you provided a default value when registering the attribute, then it should be found in all residues. If you didn't, then it will raise the error you saw for residues where it hasn't been explicitly set.
follow-up: 12 comment:12 by , 6 years ago
It’s registered as a Boolean with default False. Curious. And I’m working on getting the code out in public. :)
follow-up: 13 comment:13 by , 6 years ago
Here's the relevant snippet from ISOLDE's __init__.py: {{{ def register_ignored_residues_attr(session): from chimerax.atomic import Residue Residue.register_attr(session, 'isolde_ignore', 'isolde', default_value=False, attr_type=bool) class _MyAPI(BundleAPI): @staticmethod def initialize(session, bundle_info): initialize_openmm() register_ignored_residues_attr(session) }}} I've run simulations using the new version in Windows, MacOS and Linux without error, so it's not clear to me what could be going wrong here. On 2019-12-11 18:26, ChimeraX wrote:
comment:14 by , 6 years ago
To me, that implies that Jozef doesn't have or isn't executing the same init.py that you are. Also, you might want to move the registration in front of the initialize_openmm() call.
follow-up: 15 comment:15 by , 6 years ago
Two copies of ISOLDE stumbling over each other...? Might be worth uninstalling and reinstalling ChimeraX, just to be sure. On 2019-12-11 18:39, ChimeraX wrote:
follow-up: 16 comment:16 by , 6 years ago
That is the first thing I did before reporting the error. I have installed the latest daily build of ChimeraX deleting all the traces of the previous installation (i.e. not only using the uninstall script but also manually deleting whatever was leftover including stuff in AppData). Then I installed the new versions of Clipper and ISOLDE. Could it be somehow related to me trying to simulate smaller parts of bigger systems? The pdbs in question have more than one model. I simulate a section of the system because the whole thing is too big. Note however that when I close ChimeraX, delete the Cache and reopen ChimeraX, ISOLDE works fine on these PDBs. Since the trick with the deleting Cache works, I am not too worried. I will try to figure out when exactly the error is triggered and let you know if I have some specific diagnosis. Best, Józef On 11/12/2019, 18:44, "ChimeraX" <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: #2672: Toolshed down ----------------------------------------+-------------------------- Reporter: j.r.lewandowski@… | Owner: Conrad Huang Type: defect | Status: assigned Priority: normal | Milestone: Component: Tool Shed | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ----------------------------------------+-------------------------- Comment (by Tristan Croll): {{{ Two copies of ISOLDE stumbling over each other...? Might be worth uninstalling and reinstalling ChimeraX, just to be sure. On 2019-12-11 18:39, ChimeraX wrote: }}} -- Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/2672#comment:15> ChimeraX <http://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
comment:17 by , 6 years ago
Can also happen in the weird case where there's two 'atomic' modules and therefore two 'Residue' classes, one of which has the registered attribute and one of which doesn't. I haven't seen that happen for many moons (namely when atomic was moved out of core and in some cases it could still find the old one in core in some installations).
follow-up: 18 comment:18 by , 6 years ago
Are you loading the models from ChimeraX session files, by any chance? Eric: would loading a session that didn’t have the `isolde_ignore` custom attribute on Residue cause this?
comment:19 by , 6 years ago
Loading from a session (or closing a session) would knock out the attribute registration. Until I figure out exactly how I want to handle attribute registration/preservation in this usage scenario (if I don't knock them out, then they will keep accumulating -- might be okay), you should change your code to use getattr(r, 'isolde_ignore', False).
comment:20 by , 6 years ago
After thinking about it for 3 seconds, I'm pretty sure I need to stop knocking out the attribute registrations, since plenty of tools may register attributes with default values (e.g. partial charge) that they will depend on "being there" henceforward, regardless of session operations. They motivation for knocking them out was to prevent registration conflicts with attributes that weren't being used anymore, but that's a pretty unlikely scenario really, since it's a conflict only if the attribute has the same name and a different type(!).
I'll try to get this fix in today.
follow-up: 21 comment:21 by , 6 years ago
I tried both session restore and loading pdbs directly. I also first thought that maybe it is related to restoring ChimeraX session file (that is how I got the error first time). But I also was able to get the error when loading a pdb fresh without restoring the session. On 11/12/2019, 19:08, "ChimeraX" <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: #2672: Toolshed down ----------------------------------------+-------------------------- Reporter: j.r.lewandowski@… | Owner: Conrad Huang Type: defect | Status: assigned Priority: normal | Milestone: Component: Tool Shed | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ----------------------------------------+-------------------------- Comment (by Tristan Croll): {{{ Are you loading the models from ChimeraX session files, by any chance? Eric: would loading a session that didn’t have the `isolde_ignore` custom attribute on Residue cause this? }}} -- Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/2672#comment:18> ChimeraX <http://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
comment:22 by , 6 years ago
Okay, I have pushed out a fix -- attribute registration now live through session close/restore.
Jozef, it's a little unclear to me if you had earlier restored a session or not. If you had, then the attribute registration would be nuked and opening the PDB file directly later would not work. If the first thing you did was open the PDB directly and that didn't work, then it's a different (and mysterious) problem.
follow-up: 23 comment:23 by , 6 years ago
Just to be sure: was this in a freshly-started ChimeraX instance each time. ISOLDE’s `initialize` method only gets run once on starting ChimeraX (*not* when starting ISOLDE itself), so once something happens to break the custom attribute registration it’ll remain broken until you restart.
follow-up: 24 comment:24 by , 6 years ago
Hi both, Sorry, I have tried many things so can't remember exactly. I definitely did the combo: first restore and then load pdb directly. Based on what Eric says that could be the root of problem. Tristan is on the right track. I did not start a new instance of ChimeraX when I tried to load another PDB to start a new ISOLDE simulation. Problems occurred always when I tried to load another pdb for another ISOLDE simulation without quitting the ChimeraX. However, if the problem occurred then just restarting ChimeraX is not enough. I have to delete the Cache to be able to start an ISOLDE simulation again. I'll revisit it systematically tomorrow noting down the sequence of events in the light of our email exchange. Thanks for looking at this. Best, Józef On 11/12/2019, 20:47, "ChimeraX" <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: #2672: Toolshed down ----------------------------------------+-------------------------- Reporter: j.r.lewandowski@… | Owner: Conrad Huang Type: defect | Status: assigned Priority: normal | Milestone: Component: Tool Shed | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ----------------------------------------+-------------------------- Comment (by Tristan Croll): {{{ Just to be sure: was this in a freshly-started ChimeraX instance each time. ISOLDE’s `initialize` method only gets run once on starting ChimeraX (*not* when starting ISOLDE itself), so once something happens to break the custom attribute registration it’ll remain broken until you restart. }}} -- Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/2672#comment:23> ChimeraX <http://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
comment:25 by , 6 years ago
Tristan, it would be mildly better if your attribute registration wasn't in the custom init. If it's there then that attribute will be in every session a user who has installed ISOLDE saves, whether or not they actually used ISOLDE. If you put it in the global scope of some non-init.py file that always gets imported when ISOLDE runs, then it would only be present in sessions where ISOLDE was actually used.
comment:27 by , 6 years ago
Great. I don't know what initialize_openmm() does exactly, but if it's okay to delay it to ISOLDE startup rather than ChimeraX startup then you could move both those calls to the global scope of init.py, remove the custom init and the corresponding bundle_info.xml attribute -- since init.py is only read at ChimeraX startup if there is a custom init.
But just moving the attribute registration is fine too.
follow-up: 28 comment:28 by , 6 years ago
Initialize_openmm() should definitely stay in the bundle’s initialize method. If it’s not called before OpenMM is imported for the first time, then it won’t know how to find it’s OpenCL and CUDA libraries.
comment:29 by , 5 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Reported by Jozef Lewandowski