Opened 6 years ago

Last modified 6 years ago

#2220 assigned enhancement

Best effort to save session despite circular dependencies

Reported by: goddard@… Owned by: Greg Couch
Priority: normal Milestone:
Component: Sessions Version:
Keywords: Cc: Conrad Huang
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Darwin-18.6.0-x86_64-i386-64bit
ChimeraX Version: 0.91 (2019-07-13)
Description
Saving a session with color zone and surface zone commands.  I am going to fix the session save to avoid circular dependencies.  But the session save code should be improved to issue an error, but still try to save the part of the session that does not have circular dependencies -- ie make best effort to save the session.

Log:
Startup Messages  
---  
warning | 'clip' is a prefix of an existing command 'clipper'  
  
UCSF ChimeraX version: 0.91 (2019-07-13)  
© 2016-2019 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open /Users/goddard/ucsf/chimerax/src/bundles/std_commands/test.cxs format
session

opened ChimeraX session  

> surface zone #2 nearAtoms /A,B distance 5

> color zone #2 near /A distance 10

> save test.cxs

Traceback (most recent call last):  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/session.py", line 763, in save  
session.save(output, version=version, include_maps=include_maps)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/session.py", line 535, in save  
for name, data in mgr.walk():  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/session.py", line 272, in walk  
key = next(odg)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 69, in order_dag  
yield from _postorder_traversal(path, d, node)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 82, in _postorder_traversal  
yield from _postorder_traversal(path, d, dnode)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 82, in _postorder_traversal  
yield from _postorder_traversal(path, d, dnode)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 82, in _postorder_traversal  
yield from _postorder_traversal(path, d, dnode)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 80, in _postorder_traversal  
raise OrderDAGError("cycle detected, reached %s from %s" % (repr(dnode),
repr(path)), path)  
chimerax.core.order_dag.OrderDAGError: cycle detected, reached <('ChimeraX-
Map', 'VolumeSurface'), 1> from ['models', <'Models', 1>, <('ChimeraX-Map',
'VolumeSurface'), 1>, <('ChimeraX-Surface', 'ZoneColor'), 1>]  
  
chimerax.core.order_dag.OrderDAGError: cycle detected, reached from ['models',
, , ]  
  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 80, in _postorder_traversal  
raise OrderDAGError("cycle detected, reached %s from %s" % (repr(dnode),
repr(path)), path)  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/cmd_line/tool.py", line 254, in execute  
cmd.run(cmd_text)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/commands/cli.py", line 2646, in run  
result = ci.function(session, **kw_args)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/commands/save.py", line 61, in save  
fmt.export(session, filename, fmt.nicknames[0], **kw)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/io.py", line 213, in export  
result = self.export_func(session, path, **kw)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/session.py", line 763, in save  
session.save(output, version=version, include_maps=include_maps)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/session.py", line 535, in save  
for name, data in mgr.walk():  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/session.py", line 272, in walk  
key = next(odg)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 69, in order_dag  
yield from _postorder_traversal(path, d, node)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 82, in _postorder_traversal  
yield from _postorder_traversal(path, d, dnode)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 82, in _postorder_traversal  
yield from _postorder_traversal(path, d, dnode)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 82, in _postorder_traversal  
yield from _postorder_traversal(path, d, dnode)  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 80, in _postorder_traversal  
raise OrderDAGError("cycle detected, reached %s from %s" % (repr(dnode),
repr(path)), path)  
chimerax.core.order_dag.OrderDAGError: cycle detected, reached <('ChimeraX-
Map', 'VolumeSurface'), 1> from ['models', <'Models', 1>, <('ChimeraX-Map',
'VolumeSurface'), 1>, <('ChimeraX-Surface', 'ZoneColor'), 1>]  
  
chimerax.core.order_dag.OrderDAGError: cycle detected, reached from ['models',
, , ]  
  
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/order_dag.py", line 80, in _postorder_traversal  
raise OrderDAGError("cycle detected, reached %s from %s" % (repr(dnode),
repr(path)), path)  
  
See log for complete Python traceback.  
  




OpenGL version: 4.1 ATI-2.9.26
OpenGL renderer: AMD Radeon Pro 580 OpenGL Engine
OpenGL vendor: ATI Technologies Inc.

Change History (1)

comment:1 by pett, 6 years ago

Cc: Conrad Huang added
Component: UnassignedSessions
Owner: set to Greg Couch
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionBest effort to save session despite circular dependencies
Type: defectenhancement
Note: See TracTickets for help on using tickets.