# Streamline example

This script demonstrates how one can script Mayavi’s core API to display streamlines and an iso surface.

Python source code: `streamline.py`

    # Author: Prabhu Ramachandran <prabhu_r@users.sf.net>
    # Copyright (c) 2005-2020, Enthought, Inc.
    # License: BSD Style.

    # Standard library imports
    from os.path import join, abspath, dirname

    # Enthought library imports
    from mayavi.scripts import mayavi2
    from mayavi.sources.vtk_xml_file_reader import VTKXMLFileReader
    from mayavi.sources.vrml_importer import VRMLImporter
    from mayavi.modules.outline import Outline
    from mayavi.modules.streamline import Streamline
    from mayavi.modules.iso_surface import IsoSurface

    def setup_data(fname):
        """Given a VTK XML file name `fname`, this creates a mayavi2
        reader for it and adds it to the pipeline.  It returns the reader
        created.
        """
        r = VTKXMLFileReader()
        r.initialize(fname)
        mayavi.add_source(r)
        return r

    def show_vrml(fname):
        """Given a VRML file name it imports it into the scene.
        """
        r = VRMLImporter()
        r.initialize(fname)
        mayavi.add_source(r)
        return r

    def streamline():
        """Sets up the mayavi pipeline for the visualization.
        """
        # Create an outline for the data.
        o = Outline()
        mayavi.add_module(o)

        s = Streamline(streamline_type='tube')
        mayavi.add_module(s)
        s.stream_tracer.integration_direction = 'both'
        s.seed.widget.center = 3.5, 0.625, 1.25
        s.module_manager.scalar_lut_manager.show_scalar_bar = True

        i = IsoSurface()
        mayavi.add_module(i)
        i.contour.contours[0] = 550
        i.actor.property.opacity = 0.5

    @mayavi2.standalone
    def main():
        mayavi.new_scene()

        data_dir = mayavi2.get_data_dir(dirname(abspath(__file__)))
        vrml_fname = join(data_dir, 'room_vis.wrl')
        r = show_vrml(vrml_fname)

        fname = join(data_dir, 'fire_ug.vtu')
        r = setup_data(fname)
        streamline()

    if __name__ == '__main__':
        main()