def synthesize()

in getting_started/synth_data.py [0:0]


def synthesize():

    # create item list
    item_list = []
    for dimension_values in itertools.product( *dimensions.values() ):
        item = Item( dict( zip( dimensions.keys(), dimension_values ) ) )
        item_list.append(item)
    
    # itereate and prepare data    
    dimension_values_list = []
    for i in range( len(dimensions) ):
        dimension_values_list.append([])

    timestamp_list = []

    metric_values_list = []
    for i, metric in enumerate(metrics):
        metric_values_list.append([])

    labels_list = []
    for i, metric in enumerate(metrics):
        labels_list.append([])
    
    t = period[0]
    while t<period[1]:
        
        #print(t)

        for item in item_list:
            
            for i, d in enumerate(item.dimension.values()):
                #print(i,d)
                dimension_values_list[i].append(d)
            
            timestamp_list.append(t)
            
            metric_values, is_anomaly = item.get(t)
            for i, metric_value in enumerate(metric_values):
                metric_values_list[i].append(metric_value)
                labels_list[i].append( int(is_anomaly) )

        t += pd.to_timedelta(frequency)
        
    # convert to DataFrame
    data = {}
    for dimension_name, dimension_values in zip( dimensions.keys(), dimension_values_list ):
        data[dimension_name] = dimension_values
    data["timestamp"] = timestamp_list
    for metric_name, metric_values in zip( metrics, metric_values_list ):
        data[metric_name] = metric_values
    for metric_name, labels in zip( metrics, labels_list ):
        data[metric_name + "_label"] = labels    
    df = pd.DataFrame(data)
    return df