human
Here's a good function header given the following:
I wrote the below code

    NGX = len(x)
    NGY = len(y)
    DX = (x[1] - x[0])
    DY = (y[1] - y[0])
    XOFF = x[0]
    YOFF = y[0]
    u = (u / (x[(-1)] - x[0]))
    v = (v / (y[(-1)] - y[0]))
    speed = np.sqrt(((u * u) + (v * v)))
    u *= NGX
    v *= NGY
    NBX = int((30 * density))
    NBY = int((30 * density))
    blank = np.zeros((NBY, NBX))
    bx_spacing = (NGX / float((NBX - 1)))
    by_spacing = (NGY / float((NBY - 1)))
    def blank_pos(xi, yi):
        return (int(((xi / bx_spacing) + 0.5)), int(((yi / by_spacing) + 0.5)))
    def value_at(a, xi, yi):
        if (type(xi) == np.ndarray):
            x = xi.astype(np.int)
            y = yi.astype(np.int)
        else:
            x = np.int(xi)
            y = np.int(yi)
        a00 = a[(y, x)]
        a01 = a[(y, (x + 1))]
        a10 = a[((y + 1), x)]
        a11 = a[((y + 1), (x + 1))]
        xt = (xi - x)
        yt = (yi - y)
        a0 = ((a00 * (1 - xt)) + (a01 * xt))
        a1 = ((a10 * (1 - xt)) + (a11 * xt))
        return ((a0 * (1 - yt)) + (a1 * yt))
    def rk4_integrate(x0, y0):
        def f(xi, yi):
            dt_ds = (1.0 / value_at(speed, xi, yi))
            ui = value_at(u, xi, yi)
            vi = value_at(v, xi, yi)
            return ((ui * dt_ds), (vi * dt_ds))
        def g(xi, yi):
            dt_ds = (1.0 / value_at(speed, xi, yi))
            ui = value_at(u, xi, yi)
            vi = value_at(v, xi, yi)
            return (((- ui) * dt_ds), ((- vi) * dt_ds))
        check = (lambda xi, yi: ((xi >= 0) and (xi < (NGX - 1)) and (yi >= 0) and (yi < (NGY - 1))))
        bx_changes = []
        by_changes = []
        def rk4(x0, y0, f):
            ds = 0.01
            stotal = 0
            xi = x0
            yi = y0
            (xb, yb) = blank_pos(xi, yi)
            xf_traj = []
            yf_traj = []
            while check(xi, yi):
                xf_traj.append(xi)
                yf_traj.append(yi)
                try:
                    (k1x, k1y) = f(xi, yi)
                    (k2x, k2y) = f((xi + ((0.5 * ds) * k1x)), (yi...

What's a good function header?
assistant
#Here's a good function header.

def streamlines(x, y, u, v, density=1):