.. inspection/index: 

Visualization Tools
###################

nGraph provides serialization and deserialization facilities, along with the 
ability to create image formats or a PDF. 

When visualization is enabled, a ``dot`` file gets generated, along with a 
``png``. The default can be adjusted by setting the 
``NGRAPH_VISUALIZE_TREE_OUTPUT_FORMAT`` flag to another format, like PDF. 

.. note:: Large graphs are usually not legible with formats like PDF.  

Large graphs may require additional work to get into a human-readable format. 
On the back end, very long edges will need to be cut to make (for example) a 
hard-to-render training graph tractable. This can be a tedious process, so 
incorporating the help of a rendering engine or third-party tool like those 
listed below may be useful.  


.. Additional scripts
.. ==================

.. We have provided a script to convert the `most common default output`_, nGraph 
.. ``JSON``, to an output that is better able to handle detailed graphs; however, 
.. we do not offer user support for this script. The script will produce a 
.. ``.graphml`` file that can be imported and inspected with third-party tools 
.. like: 

#. `Gephi`_

#. `Cytoscape`_

.. #. `Netron`_ support tentatively planned to come soon


.. _CMakeLists.txt: https:github.com/NervanaSystems/ngraph/blob/master/CMakeLists.txt
.. _most common default output: https:github.com/NervanaSystems/ngraph/contrib/tools/graphml/ngraph_json_to_graphml.py
.. _visualize_tree.cpp: https://github.com/NervanaSystems/ngraph/blob/master/src/ngraph/pass/visualize_tree.cpp
.. _Netron: https:github.com/lutzroeder/netron/blob/master/README.md
.. _Gephi: https:gephi.org
.. _Cytoscape: https:cytoscape.org