def do_step(k,i):
    print i
    ds = timeseries[i]

    #Get the surface and scalars from the first one in the series
    surf_poly = ttf.read_step(linesurf[i])

    normals = ttf.get_data(surf_poly, 'perp')
    parallels = ttf.get_data(surf_poly, 'par')
    torsionals = ttf.get_data(surf_poly, 'phi')

    #Extract the wave flux mayavi field from the yt dataset
    fwfield = util.get_mlab_field_yt(ds, 'wave_flux_x', 'wave_flux_y', 'wave_flux_z', cube_slice=cube_slice)

    #Interpolate the Wave flux to the velocity surface
    surface_fwave_filter, surface_fwave = ttf.interpolate_vectors(fwfield.outputs[0],
                                                                 surf_poly)

    Fwperp, Fwpar, Fwphi = ttf.get_surface_velocity_comp(surface_fwave,
                                                         normals, torsionals,
                                                         parallels)

    ttf.write_wave_flux(path_join("WaveFlux_%s_%s_%s_%05i.vtp"%(cfg.driver, cfg.str_period, cfg.amp, i+1)),
                             surf_poly, parallels, normals, torsionals, Fwpar, Fwperp, Fwphi)

    Fpar_line[k] = Fwpar[save_index[i]]
    Fperp_line[k] = Fwperp[save_index[i]]
    Fphi_line[k] = Fwphi[save_index[i]]
    files.sort()
    return files

def path_join(filename):
    return os.path.join(os.path.join(cfg.data_dir,'%s/'%tube_r),filename)

for tube_r in cfg.tube_radii:
    print tube_r
    wave = glob_files(tube_r, 'Wave*')
    
    Fpar = np.zeros([len(wave)])
    Fperp = np.zeros([len(wave)])
    Fphi = np.zeros([len(wave)])
    
    for i, awave in enumerate(wave):
        surf_poly = ttf.read_step(awave)
    
        Fwperp = ttf.get_data(surf_poly, 'Fwperp')
        Fwpar = ttf.get_data(surf_poly, 'Fwpar')
        Fwphi = ttf.get_data(surf_poly, 'Fwphi')
        
        Fperp[i] = np.mean(Fwperp)
        Fpar[i] = np.mean(Fwpar)
        Fphi[i] = np.mean(Fwphi)
        
        Fwpar[np.abs(Fwpar)<1e-5], Fwperp[np.abs(Fwperp)<1e-5], Fwphi[np.abs(Fwphi)<1e-5] = 0., 0., 0.

        Fwtot = np.sqrt(Fwpar**2 + Fwperp**2 + Fwphi**2)
        Fwpar, Fwperp, Fwphi = (Fwpar/Fwtot)*100, (Fwperp/Fwtot)*100, (Fwphi/Fwtot)*100
        
        Fwpar, Fwperp, Fwphi = map(np.abs, [Fwpar, Fwperp, Fwphi])
def glob_files(tube_r, search):
    files = glob.glob(os.path.join(cfg.data_dir,tube_r,search))
    files.sort()
    return files

n = 400
timeseries = ytm.load(os.path.join(cfg.gdf_dir,"*5_0*.gdf"))
ds = timeseries[n]
cg = ds.h.grids[0]
cube_slice = np.s_[:,:,:-5]

#Define the size of the domain
linesurf = glob_files('r60','Fieldline_surface*')

surf_poly = ttf.read_step(linesurf[n])

mlab.options.offscreen = True
fig = mlab.figure()

#Create a bfield tvtk field, in mT
bfield = mlab.pipeline.vector_field(cg['mag_field_x'][cube_slice] * 1e3,
                                    cg['mag_field_y'][cube_slice] * 1e3,
                                    cg['mag_field_z'][cube_slice] * 1e3,
                                    name="Magnetic Field",figure=fig)
#Create a scalar field of the magntiude of the vector field
bmag = mlab.pipeline.extract_vector_norm(bfield, name="Field line Normals")
#==============================================================================
# Get GBand
#==============================================================================
path = '/storage2/users/stuart/GBand/'