def tail(fn, cols=[0], comment='#'):
    """Extract last data (to continue simulation)
    """
    out = []
    for raw_line in fn:
        line = raw_line.strip('\n')
        if util.parsable(line, comment):
            out = line.split(' ')
    for i in range(len(out)):
        out[i] = float(out[i])
    return out[:len(cols)]
def tail(fn, cols=[0], comment='#'):
    """Extract last data (to continue simulation)
    """
    out = []
    for raw_line in fn:
        line = raw_line.strip('\n')
        if util.parsable(line, comment):
            out = line.split(' ')
    for i in range(len(out)):
        out[i] = float(out[i])
    return out[:len(cols)]
def extractData(fn, cols=[0], comment='#'):
    """Data extraction function
    callback must be a function object which will be called when the function
    read fn. callback function signature:
        def callback(data)
    where data is a list with size 8
    
    >>> extractData(['# comment', '10 10 10'])
    [[10.0]]
    >>> extractData(['# comment', '10 12 13'], [0, 1, 2])
    [[10.0], [12.0], [13.0]]
    """
    out = []
    for c in cols:
        out.append([])
    for raw_line in fn:
        line = raw_line.strip('\n')
        if util.parsable(line, comment):
            nums = line.split(' ')
            for i in range(len(out)):
                out[i].append(float(nums[cols[i]]))
    return out
def extractData(fn, cols=[0], comment='#'):
    """Data extraction function
    callback must be a function object which will be called when the function
    read fn. callback function signature:
        def callback(data)
    where data is a list with size 8
    
    >>> extractData(['# comment', '10 10 10'])
    [[10.0]]
    >>> extractData(['# comment', '10 12 13'], [0, 1, 2])
    [[10.0], [12.0], [13.0]]
    """
    out = []
    for c in cols:
        out.append([])
    for raw_line in fn:
        line = raw_line.strip('\n')
        if util.parsable(line, comment):
            nums = line.split(' ')
            for i in range(len(out)):
                out[i].append(float(nums[cols[i]]))
    return out