﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	blockedby	blocking	notify_on_close	platform	project
2220	Best effort to save session despite circular dependencies	goddard@…	Greg Couch	"{{{
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.

}}}
"	enhancement	assigned	normal		Sessions				Conrad Huang				all	ChimeraX
