def dataview_populate(json, index, params):
    """
    Populates a data view.
    Operates on a single data and populates the data in the json from it.
    """

    results = index.query(start=params.start, end=params.end, label=params.chrom)
    
    fitdata = []
    data = map(list, (results.idx,results.val))
    xscale = (params.start, params.end)
    
    for row in json:
        style = row['style']
        if style.startswith('FIT'):
            # fit the data
            fitdata = fitlib.gaussian_smoothing(data[0], data[1], sigma=params.sigma, epsilon=0.01 )
            fitdata = map(list, fitdata)
            row['data'] = fitdata
        elif  style.startswith('SEGMENT'):
            assert fitdata, 'smoothing must be applied first'
            peakdata = fitlib.fixed_width_predictor( x=fitdata[0], y=fitdata[1], params=params )
            row['data'] = peakdata
        else:
            row['data'] = data
        
        row['xscale'] = xscale
        row['w'] = params.image_width

    return json
def peaks(x, y, params):
    "Returns peaks for x and y data"
    data = fitlib.fixed_width_predictor( x=x, y=y, params=params )
    return data