Exemplo n.º 1
0
def preprocessing(lc_data, windowSize=50):
    lc_nor = TimeSeriesScalerMeanVariance(mu=0., std=1.).fit_transform(
        [lc_data['instances']])
    lc_data['lc_nor'] = lc_nor

    paa = ut_gen.genListPAA(instances_nor=lc_nor,
                            windowSize=windowSize,
                            timestamp=lc_data['timestamp'])
    lc_data['paa'] = paa
    sax = ut_gen.genListSAX(instances_nor=lc_nor,
                            windowSize=windowSize,
                            timestamp=lc_data['timestamp'],
                            n_sax_symbols=n_sax_symbols)
    lc_data['sax'] = sax
    one_sax = ut_gen.genList1D_SAX(instances_nor=lc_nor,
                                   windowSize=windowSize,
                                   timestamp=lc_data['timestamp'],
                                   n_sax_symbols_slope=n_sax_symbols_slope,
                                   n_sax_symbols_avg=n_sax_symbols_avg)
    lc_data['one_sax'] = one_sax

    corePlot = sketchDyBinService(windowSize=windowSize,
                                  initialBin=5,
                                  isOnline=False)
    sketchInstances = corePlot.sketchMode(instances=list(lc_nor[0].ravel()))
    lc_data['dy_bin'] = {
        'sketchInstances': sketchInstances,
        'timestamp': lc_data['timestamp']
    }
    print("a")
Exemplo n.º 2
0
def dy_tran():
    if request.method == 'POST':
        listKeys = [
            'inputWindowSize', 'inputInitialBin', 'isOnline', 'fileName'
        ]
        inputKeys = request.form.keys()
        if ut_service.isCompleteInputKey(listKeys=listKeys,
                                         inputKeys=inputKeys):
            FdataMDF, FtimestampMDF = ut_service.getMDFData(
                request.form.get('fileName'))
            windowSize = int(request.form.get('inputWindowSize'))
            initialBin = int(request.form.get('inputInitialBin'))
            inputOnline = bool(request.form.get('isOnline'))

            corePlot = sketchDyBinService(windowSize=windowSize,
                                          initialBin=initialBin,
                                          isOnline=inputOnline)
            sketchInstances = corePlot.sketchMode(instances=FdataMDF)
            indexBinList = corePlot.getBinNameInstances()
            window = corePlot.getWindow()

        else:
            return jsonify(
                status="404",
                message="Keys are  incorrect",
            )

    return render_template("html/mdf/mdf_main.html", listFiles=[])
Exemplo n.º 3
0
def ratioPlot():
    listFiles = ut_mdf.getListMDF()
    if request.method == 'POST':
        fileName = str(request.form.get('selectFile'))

        FdataMDF, FtimestampMDF = ut_service.getMDFData(fileName)

        # sketch
        windowSize = int(request.form.get('inputWindowSize'))
        initialBin = int(request.form.get('inputInitialBin'))
        x_axis = FtimestampMDF
        # corePlot = sketchService(windowSize=windowSize, initialBin=3)
        # sketch3Instances = corePlot.sketchMode(instances=FdataMDF)

        corePlot = sketchDyBinService(windowSize=windowSize, initialBin=3)
        sketchInstances = corePlot.sketchMode(instances=FdataMDF)
        print("sketch {}".format(initialBin))

        bin3Instnace = ut_gen.genFixBin(binSize=200, instances=FdataMDF)
        print("fix 3")
        fixBinInstnace = ut_gen.genFixBin(binSize=initialBin,
                                          instances=FdataMDF)
        print("fix {}".format(initialBin))

        # jsMDF, divMDF = ut_bokeh.JSandDivMutliplePlot(x_axis=x_axis,
        #                                               y_axisList = [FdataMDF,sketch3Instances,sketchInstances,bin3Instnace,fixBinInstnace],
        #                                               circleList = [True,False,False,False,False],
        #                                               legend_labelList = ['Raw','DyBin3','DyBin{}'.format(initialBin),'Bin size = 3','Bin size = {}'.format(initialBin)],
        #                                               line_alphaList = [0.4,1,1,1,1],
        #                                               title=fileName)

        jsMDF, divMDF = ut_bokeh.JSandDivMutliplePlot(
            x_axis=x_axis,
            y_axisList=[FdataMDF, sketchInstances, bin3Instnace],
            circleList=[True, False, False],
            legend_labelList=['Raw', 'DyBin', 'Bin size = 200'],
            line_alphaList=[0.4, 1, 1],
            title=fileName)
        core = com_service(inputList=FdataMDF)
        # dictResult = core.TWINcurveBinSize(maxBinSize=len(x_axis))
        # jsCom, divCom = ut_bokeh.JSandDivComPlot(binSizeList=dictResult["binSizeList"], comList=dictResult["comList"],
        #                                          varList=dictResult["varList"])
        # return render_template("html/ratio/ratio_plot.html", jsMDF=jsMDF, divMDF=divMDF
        #                        , jsCom=jsCom, divCom=divCom, listFiles=listFiles)

        dictResult = core.TWINcurveWindowSize()

        # dictResult = core.TWINcurveWindowSizeFixBin(timestamps=FtimestampMDF)
        jsCom, divCom = ut_bokeh.JSandDivComPlotTemp(
            binSizeList=dictResult["binSizeList"],
            comList=dictResult["comList"],
            varList=dictResult["varList"])
        return render_template("html/ratio/ratio_plot.html",
                               jsMDF=jsMDF,
                               divMDF=divMDF,
                               jsCom=jsCom,
                               divCom=divCom,
                               listFiles=listFiles)
Exemplo n.º 4
0
 def TWINcomputeCompression(self, windowSize):
     corePlot = sketchDyBinService(windowSize=windowSize,
                                   initialBin=3,
                                   isOnline=False)
     sketchInstances = corePlot.sketchMode(instances=self.inputList)
     varCur = variance(sketchInstances)
     varMax = variance(self.inputList)
     comCur = self.compressionRatioWindowSize(windowSize=windowSize)
     # comMax = len(self.inputList)
     return {"varaince_ratio": varCur / varMax, "compression_ratio": comCur}
Exemplo n.º 5
0
def offline_dysketch():
    if request.method == 'POST':
        windowSize = int(request.form.get('inputWindowSize'))
        initialBin = int(request.form.get('inputInitialBin'))
        fileInput = request.files['file']
        fileName = secure_filename(fileInput.filename)

        instances = [float(line.strip().decode("utf-8")) for line in fileInput]

        timeFileInput = request.files['TimestampFileInput']
        timeFileName = secure_filename(timeFileInput.filename)

        timeFileInput = request.files['TimestampFileInput']
        timeFileName = secure_filename(timeFileInput.filename)
        if timeFileName == '':
            x_axis = list(range(len(instances)))
        else:
            tempX_axis = [
                float(line.strip().decode("utf-8")) for line in timeFileInput
            ]
            if len(tempX_axis) == len(instances):
                x_axis = tempX_axis
            else:
                return render_template(
                    'inputplot.html',
                    error="instances of two inputs are not equal")

        corePlotOffline = sketchDyBinService(windowSize=windowSize,
                                             initialBin=initialBin,
                                             isOnline=False)
        offlineSketchInstances = corePlotOffline.sketchMode(
            instances=instances)

        jsRaw, divRaw = ut_bokeh.JSandDivLinePlot(x_axis=x_axis,
                                                  y_axis=instances,
                                                  title="Raw data")

        jsOff, divOff = ut_bokeh.JSandDivLinePlot(
            x_axis=x_axis,
            y_axis=offlineSketchInstances,
            # change_points=change_points,
            title="Sketching from Offile Dynamic Binning",
            isCanExport=True)

        rows = corePlotOffline.getDataTableMeanVarianceBin()

        return render_template("result_offline.html",
                               windowSize=windowSize,
                               initialBin=initialBin,
                               fileName=fileName,
                               jsRaw=jsRaw,
                               divRaw=divRaw,
                               jsOff=jsOff,
                               divOff=divOff,
                               rows=rows)
Exemplo n.º 6
0
def export_JsDiv_rawdy(data):
    list_ini_bin = [3, 5, 7, 10]
    TOOLTIPS = [("index", "$index"), ("(x,y)", "@x{0,0.000000}, $y"),
                ("UTC", "@UTC")]
    instances = [float(i) for i in data["instances"]]
    timestamp = [float(i) for i in data["timestamps"]]
    UTC = ut_astro.convertList_MJDtoUTC(timestamp)
    fileName = data["fileName"]

    plot = figure(tooltips=TOOLTIPS,
                  title="Result : {}".format(fileName),
                  x_axis_label='time',
                  y_axis_label='Flux',
                  sizing_mode="stretch_both")
    source = ColumnDataSource(data=dict(x=timestamp, y=instances, UTC=UTC))
    plot.line('x',
              'y',
              source=source,
              line_alpha=1,
              color="black",
              line_width=2,
              legend_label="Raw data")
    plot.circle('x',
                'y',
                source=source,
                color="black",
                legend_label="Raw data")

    windowSize = int(data["windowSize"])

    corePlot = sketchDyBinService(windowSize=windowSize,
                                  initialBin=5,
                                  isOnline=False)
    sketchInstances = corePlot.sketchMode(instances=instances)

    source = ColumnDataSource(data=dict(x=timestamp, y=sketchInstances))
    plot.line('x',
              'y',
              source=source,
              line_alpha=1,
              color="red",
              line_width=2,
              legend_label="DyBin")

    plot.legend.border_line_width = 3
    plot.legend.click_policy = "hide"
    plot.legend.border_line_color = "navy"
    plot.legend.border_line_alpha = 0.
    plot.xaxis.axis_label_text_font_size = "16pt"
    plot.xaxis.major_label_text_font_size = "13pt"
    plot.yaxis.axis_label_text_font_size = "16pt"
    plot.yaxis.major_label_text_font_size = "13pt"
    js, div = components(plot)
    return js, div
Exemplo n.º 7
0
def getSublenght(period,mdfData):
    corePlot = sketchDyBinService(windowSize=window_size, initialBin=ini_bin, isOnline=False)
    corePlot.sketchMode(instances=mdfData['instances'])
    window = corePlot.getWindow()
    prior_index = period
    cur_index = period+1
    start_point = 0
    for i in range(0,prior_index):
        start_point = start_point + window[i].get_number_instance()
    print(start_point)
    end_point = start_point + window[prior_index].get_number_instance() +  window[cur_index].get_number_instance()
    print(end_point)
    return start_point,end_point
Exemplo n.º 8
0
def sketchDynamicBinning():
    if request.method == 'POST':
        inputKeys = ['inputWindowSize', 'inputInitialBin', 'isOnline']
        fileKeys = ['datastreamInputFile']
        intersection_inputKeys = set.intersection(set(inputKeys),
                                                  set(request.form.keys()))
        intersection_fileKeys = set.intersection(set(fileKeys),
                                                 set(request.files.keys()))
        if (len(intersection_inputKeys) == len(inputKeys)) & (
                len(fileKeys) == len(intersection_fileKeys)):
            try:
                windowSize = int(request.form.get('inputWindowSize'))
                initialBin = int(request.form.get('inputInitialBin'))
                isOnline = bool(request.form.get('isOnline'))
                fileInput = request.files['datastreamInputFile']
                fileName = secure_filename(fileInput.filename)
                instances = [
                    float(line.strip().decode("utf-8")) for line in fileInput
                ]
                corePlot = sketchDyBinService(windowSize=windowSize,
                                              initialBin=initialBin,
                                              isOnline=isOnline)
                sketchInstances = corePlot.sketchMode(instances=instances)
                segmentInstances = corePlot.getListMeanBin()
                transList = []
                ######### gen Tran and T-test ###########

                # threshold_tTest = float(request.form.get('T_test'))
                # dictResult = corePlot.getListResultTest()
                # transList = ut_service.genTranFromTtest(dictResult=dictResult,
                #                                         threshold_tTest=threshold_tTest)
                # ut_service.exportCSVTtest(dictResult=dictResult,fileName=fileName)

                ######### gen Tran and T-test ###########

                return jsonify(data_normalization=sketchInstances,
                               data_segment=segmentInstances,
                               segment_size=windowSize,
                               status="normal",
                               transList=transList)
            except Exception as e:
                return jsonify(
                    status="404",
                    message='inputs are incorrect',
                )
        else:
            return jsonify(
                status="404",
                message="Keys are  incorrect",
            )
Exemplo n.º 9
0
def sketchBinInWindow(instances,
                      windowSize,
                      isFixBin=True,
                      initialBin=3,
                      isOnline=True):
    if isFixBin:
        print("a")
    else:
        corePlot = sketchDyBinService(windowSize=windowSize,
                                      initialBin=initialBin,
                                      isOnline=isOnline)
        corePlot.sketchMode(instances=instances)
        window = corePlot.getWindow()
    return window
Exemplo n.º 10
0
    def TWINcurveWindowSize(self, minWindowSize=20, isRatio=True):
        dictResult = {}
        varList = []
        comList = []
        maxWindowSize = ceil(len(self.inputList) / float(3))
        windowSizeList = [2, 3, 5, 7, 12, 18
                          ] + [*range(minWindowSize, 300, 15)]

        varMax = variance(self.inputList)
        winSize = []
        for windowSize in windowSizeList:
            print(windowSize)
            winSize.append(windowSize)
            corePlot = sketchDyBinService(windowSize=windowSize,
                                          initialBin=3,
                                          isOnline=False)
            sketchInstances = corePlot.sketchMode(instances=self.inputList)

            var = variance(sketchInstances)

            # var = corePlot.getVarianceWindow(isNormalization=False)
            varList.append(var)
            comList.append(
                self.compressionRatioWindowSize(windowSize=windowSize))
        # add max
        comList.append(len(self.inputList))
        varList.append(varMax)
        windowSizeList.append(len(self.inputList))

        if isRatio:
            dictResult["varList"] = ut.calToPercent(max=varMax,
                                                    listInput=varList)
        else:
            dictResult["varList"] = varList
        dictResult["comList"] = ut.calToPercent(max=len(self.inputList),
                                                listInput=comList)
        dictResult["binSizeList"] = winSize

        x0 = windowSizeList[ceil(len(windowSizeList) / 2)]
        x1 = windowSizeList[-1]
        y0 = dictResult["varList"][ceil(len(windowSizeList) / 2)]
        y1 = dictResult["varList"][-1]
        dictResult["interpolationList"] = self.linearInterpolation(
            y1=y1, y0=y0, x1=x1, x0=x0, xAxisList=windowSizeList)

        return dictResult
Exemplo n.º 11
0
def export_SimultaneousDybin(listData, initialBin=3, isJSDIV=True):
    TOOLTIPS = [("index", "$index"), ("(x,y)", "(@x{0,0}, @y{0,0.000}"),
                ("Index Bin", "@names")]
    plot = figure(tooltips=TOOLTIPS,
                  title="Result Dynamic binning",
                  x_axis_label='time',
                  y_axis_label='Flux',
                  sizing_mode="stretch_both")
    for data, color in zip(listData, Spectral10):
        instances = [float(i) for i in data["instances"]]
        timestamp = [float(i) for i in data["timestamp"]]
        fileName = data["fileName"]
        windowSize = int(data["windowSize"])
        corePlot = sketchDyBinService(windowSize=windowSize,
                                      initialBin=initialBin,
                                      isOnline=False)
        sketchInstances = corePlot.sketchMode(instances=instances)

        source = ColumnDataSource(data=dict(x=timestamp, y=sketchInstances))
        plot.line('x',
                  'y',
                  source=source,
                  line_alpha=1,
                  color=color,
                  line_width=2,
                  legend_label=fileName)
        plot.circle('x',
                    'y',
                    source=source,
                    color=color,
                    legend_label=fileName)

    plot.legend.border_line_width = 3
    plot.legend.click_policy = "hide"
    plot.legend.border_line_color = "navy"
    plot.legend.border_line_alpha = 0.
    plot.xaxis.axis_label_text_font_size = "16pt"
    plot.xaxis.major_label_text_font_size = "13pt"
    plot.yaxis.axis_label_text_font_size = "16pt"
    plot.yaxis.major_label_text_font_size = "13pt"
    if isJSDIV:
        js, div = components(plot)
        return js, div
    else:
        return plot
Exemplo n.º 12
0
    def computeResultWinSize(self, windowSize, isRatio=False):
        corePlot = sketchDyBinService(windowSize=windowSize,
                                      initialBin=3,
                                      isOnline=False)
        sketchInstances = corePlot.sketchMode(instances=self.inputList)
        var = variance(sketchInstances)
        compress = self.compressionRatioWindowSize(windowSize=windowSize)
        if isRatio:
            varMax = variance(self.inputList)
            var = float(var) / float(varMax)
            compress = compress / float(len(self.inputList))

        dictResult = {
            "variance": var,
            "compress": compress,
            "windowSize": windowSize
        }

        return dictResult
Exemplo n.º 13
0
def topDetail(fileInput):
    data = ut_mdf.getMDFdata(fileName=fileInput)
    corePlot = sketchDyBinService(windowSize=5, initialBin=3, isOnline=False)
    sketchInstances = corePlot.sketchMode(instances=data["data"])
    TOOLTIPS = [
        ("index", "$index"),
        ("(x,y)", "@x{0,0.000000}, $y"),
    ]
    js, div = ut_bokeh.JSandDivDoublePlotStandard(x_axis=data["timestamp"],
                                                  y_axisRaw=data["data"],
                                                  y_axisBin=sketchInstances,
                                                  title=data["fileName"],
                                                  TOOLTIPS=TOOLTIPS)
    rows = db.getDTW(data["fileName"])

    return render_template("html/topList/topList_detail.html",
                           jsMDF=js,
                           divMDF=div,
                           fileName=data["fileName"],
                           rows=rows)
Exemplo n.º 14
0
def MDFPlot():
    listFiles = ut_mdf.getListMDF()
    if request.method == 'POST':
        fileName = str(request.form.get('selectFile'))

        FdataMDF, FtimestampMDF = ut_service.getMDFData(fileName)

        # sketch
        windowSize = int(request.form.get('inputWindowSize'))
        initialBin = int(request.form.get('inputInitialBin'))
        inputOnline = request.form.get('inputOnline')
        # if inputOnline == "True":
        #     isOnline = True
        # else:
        #     isOnline = False
        isOnline = False
        # print("**************{}***********".format(isOnline))
        corePlot = sketchDyBinService(windowSize=windowSize,
                                      initialBin=initialBin,
                                      isOnline=isOnline)
        threshold_tTest = float(request.form.get('threshold_tTest'))
        threshold_fTest = float(request.form.get('threshold_fTest'))
        sketchInstances = corePlot.sketchMode(instances=FdataMDF)
        indexBinList = corePlot.getBinNameInstances()
        getListMeanBin = corePlot.getListMeanBin()
        print(getListMeanBin)
        dictResult = corePlot.getListResultTest()

        js, div = ut_bokeh.JSandDivRawAndBin(x_axis=FtimestampMDF,
                                             y_raw=FdataMDF,
                                             y_axisList=[sketchInstances],
                                             legend_labelList=["dyBin"],
                                             namesList=[indexBinList],
                                             title="{} window size :{}".format(
                                                 fileName, windowSize))

        return render_template("html/mdf/mdf_plot.html",
                               jsMDF=js,
                               divMDF=div,
                               listFiles=listFiles)
Exemplo n.º 15
0
def lcPlot():
    listFiles = ut_service.getListLC_test()
    if request.method == 'POST':
        fileName = str(request.form.get('selectFile'))
        inputDuration = int(request.form.get('inputDuration'))
        inputHeight = int(request.form.get('inputHeight'))

        windowSize = int(request.form.get('inputWindowSize'))
        initialBin = int(request.form.get('inputInitialBin'))

        rawInstances, transList = ut_service.getDataLC_test(
            fileName, L=int(inputHeight), I=int(inputDuration))
        x_axis = list(range(len(rawInstances)))
        corePlot = sketchDyBinService(windowSize=windowSize,
                                      initialBin=initialBin,
                                      isOnline=False)
        sketchInstances = corePlot.sketchMode(instances=rawInstances)

        dictResult = corePlot.getListResultTest()
        threshold_tTest = float(request.form.get('threshold_tTest'))
        if threshold_tTest == 0:
            alarmList = []
        else:
            alarmList = ut_service.genTranFromTtest(
                dictResult=dictResult, threshold_tTest=threshold_tTest)

        js, div = ut_bokeh.JSandDivDoublePlotWithToggle(
            x_axis=x_axis,
            y_axisRaw=rawInstances,
            y_axisBin=sketchInstances,
            title=fileName,
            transList=transList,
            alarmList=alarmList)

        rows = corePlot.getDataTableMeanVarianceBin()
        return render_template("html/LC_test/lc_test_plot.html",
                               jsResult=js,
                               divResult=div,
                               listFiles=listFiles,
                               rows=rows)
Exemplo n.º 16
0
def genListDyBin(instances,
                 windowSize,
                 timestamp,
                 initialBin=5,
                 isOnline=False):
    corePlot = sketchDyBinService(windowSize=windowSize,
                                  initialBin=initialBin,
                                  isOnline=isOnline)
    sketchInstances = corePlot.sketchMode(instances=instances)
    indexBinList = corePlot.getBinNameInstances()
    window = corePlot.getWindow()
    meanList = []
    for bin in window:
        meanList.append(bin.get_representation())
    return {
        "sketchInstances": sketchInstances,
        "timestamp": timestamp,
        "indexBinList": indexBinList,
        "window": window,
        "variance": variance(meanList),
        "mean": mean(meanList)
    }
Exemplo n.º 17
0
                ut_light.getFullPath(height=height, duration=duration))
            outputdyFile = "{}dy_html\\".format(
                ut_light.getFullPath(height=height, duration=duration))

            for mainFile, ansFile in zip(listFile, listAns):
                file_name = os.path.basename(mainFile)
                mainRaw = [float(item) for item in ut.txt_to_list(mainFile)]
                ansRaw = [float(item) for item in ut.txt_to_list(ansFile)]
                ansList = []
                tranList = []
                for ans in ansRaw:
                    ansList = ansList + ut_light.genListAns(start=ans,
                                                            duration=duration)
                    tranList = {"startTran": ans, "endTran": ans + duration}
                corePlot = sketchDyBinService(windowSize=windowSize,
                                              initialBin=initialBin,
                                              isOnline=False)
                sketchInstances = corePlot.sketchMode(instances=mainRaw)
                window = corePlot.getWindow()
                cluster = ut_cluster.cluster_xMean_Dy(binsList=window,
                                                      kmax=windowSize,
                                                      hist_bin=20)
                resultDistance = ut_cluster.clusterMaxDistance(
                    centers=cluster["centers"])
                tranBins = ut_cluster.transientClusterMethod(
                    maxDistance=resultDistance, clusters=cluster["clusters"])
                a = corePlot.getStartEndIndex(indexBinLists=tranBins)
                x_axis = list(range(len(mainRaw)))
                indexBinList = corePlot.getBinNameInstances()
                # export HTML
                fig = ut_plotly.export3DClusterDYTemp(
Exemplo n.º 18
0
    "date20191203", "date20191204", "date20191205", "date20191224",
    "date20200130", "date20200201"
]
fields = []
rows = []

if __name__ == '__main__':
    for pattern in patterns:
        try:
            with open("{}_tran.csv".format(pattern), 'r') as csvfile:
                # creating a csv reader object
                csv_reader = reader(csvfile)
                for row in csv_reader:
                    file_name = row[0]
                    FdataMDF, FtimestampMDF = ut_service.getMDFData(file_name)
                    corePlot = sketchDyBinService(windowSize=windowSize,
                                                  initialBin=3)
                    sketchInstances = corePlot.sketchMode(instances=FdataMDF)
                    indexBinList = corePlot.getBinNameInstances()
                    plot = ut_bokeh.exportPlotRawAndBin(
                        x_axis=FtimestampMDF,
                        y_raw=FdataMDF,
                        y_axisList=[sketchInstances],
                        legend_labelList=["dyBin"],
                        namesList=[indexBinList],
                        title="{} window size :{}".format(
                            file_name, windowSize))

                    plots = [plot]
                    outputFile = "{}".format(file_name)
                    # ut_bokeh.exportPlotWeb(path=pathHtmlOutput, fileName=fileName, plot=plot)
                    ut_bokeh.exportPlotPng(path="tran",
Exemplo n.º 19
0
                                     alphabet_size_avg=n_sax_symbols)
sax_dataset_inv = sax.inverse_transform(sax.fit_transform(lc_nor))

# 1d-SAX transform
n_sax_symbols_avg = 5
n_sax_symbols_slope = 5
one_d_sax = OneD_SymbolicAggregateApproximation(
    n_segments=n_paa_segments,
    alphabet_size_avg=n_sax_symbols_avg,
    alphabet_size_slope=n_sax_symbols_slope)
transformed_data = one_d_sax.fit_transform(lc_nor)
one_d_sax_dataset_inv = one_d_sax.inverse_transform(transformed_data)

#dynamic binning
lc_nor_list = list(lc_nor[0].ravel())
corePlot = sketchDyBinService(windowSize=n_paa_segments,
                              initialBin=3, isOnline=False)
sketchInstances = corePlot.sketchMode(instances=lc_nor_list)
print("a")



plt.figure()
plt.subplot(2, 2, 1)  # First, raw time series
plt.plot(timestamps,lc_nor[0].ravel(), "b-")
plt.title("Raw time series")

# plt.subplot(2, 3, 2)  # Second, PAA
# plt.plot(timestamps,lc_nor[0].ravel(), "b-", alpha=0.4)
# plt.plot(timestamps,paa_dataset_inv[0].ravel(), "b-")
# plt.title("PAA")
Exemplo n.º 20
0
def upload_file():
    if request.method == 'POST':
        windowSize = int(request.form.get('inputWindowSize'))
        initialBin = int(request.form.get('inputInitialBin'))

        threshold_tTest = float(request.form.get('threshold_tTest'))

        fileInput = request.files['file']
        fileName = secure_filename(fileInput.filename)

        instances = [float(line.strip().decode("utf-8")) for line in fileInput]
        corePlotOnline = sketchDyBinService(windowSize=windowSize,
                                            initialBin=initialBin,
                                            isOnline=True)
        onlineSketchInstances = corePlotOnline.sketchMode(instances=instances)

        timeFileInput = request.files['TimestampFileInput']
        timeFileName = secure_filename(timeFileInput.filename)
        if timeFileName == '':
            x_axis = list(range(len(onlineSketchInstances)))
        else:
            tempX_axis = [
                float(line.strip().decode("utf-8")) for line in timeFileInput
            ]
            if len(tempX_axis) == len(onlineSketchInstances):
                x_axis = tempX_axis
            else:
                return render_template(
                    'inputplot.html',
                    error="instances of two inputs are not equal")

        # dictResult = corePlotOnline.getListResultTest()
        # transList = ut_service.genTranFromTtest(dictResult=dictResult,
        #                                         threshold_tTest=threshold_tTest)
        jsRaw, divRaw = ut_bokeh.JSandDivLinePlot(x_axis=x_axis,
                                                  y_axis=instances,
                                                  title="Raw data")
        # jsSK, divSK = ut_bokeh.JSandDivLinePlot(x_axis=x_axis, y_axis=onlineSketchInstances,
        #                                         title="Sketching from Dynamic Binning", isCanExport=True)
        # rows = corePlotOnline.getDataTableMeanVarianceBin()

        corePlotOffline = sketchDyBinService(windowSize=windowSize,
                                             initialBin=initialBin,
                                             isOnline=False)
        offlineSketchInstances = corePlotOffline.sketchMode(
            instances=instances)
        jsCh, divCh = ut_bokeh.JSandDivLinePlot(
            x_axis=x_axis,
            y_axis=offlineSketchInstances,
            # change_points=change_points,
            title="Sketching from Offile Dynamic Binning",
            isCanExport=True)
        rows = corePlotOffline.getDataTableMeanVarianceBin()

        return render_template(
            "html/dynamicbin/resultplot.html",
            windowSize=windowSize,
            initialBin=initialBin,
            fileName=fileName,
            jsRaw=jsRaw,
            divRaw=divRaw,
            # jsSK=jsSK,
            # divSK=divSK,
            jsCh=jsCh,
            divCh=divCh,
            rows=rows)
Exemplo n.º 21
0
def clusterPlot():
    listFiles = ut_mdf.getListMDF()
    if request.method == 'POST':
        windowSize = int(request.form.get('inputWindowSize'))
        fileName = str(request.form.get('selectFile'))
        isDybin = request.form.get('inputDybin')
        initialBin = int(request.form.get('inputInitialBin'))
        FdataMDF, FtimestampMDF = ut_service.getMDFData(fileName)

        corePlot = sketchDyBinService(windowSize=windowSize,
                                      initialBin=5,
                                      isOnline=False)
        sketchInstances = corePlot.sketchMode(instances=FdataMDF)
        indexBinList = corePlot.getBinNameInstances()
        window = corePlot.getWindow()

        indexTimestamp = 0
        segment3D = []
        for index, bin in enumerate(window):
            raw = bin.get_raw()
            start = copy.copy(indexTimestamp)
            indexTimestamp = indexTimestamp + len(raw)
            tempTimestamp = FtimestampMDF[start:indexTimestamp]
            slope = ut_cal.calSlope(timestamps=tempTimestamp, instances=raw)

            result = {
                "raw": raw,
                "index": index,
                "variance": bin.get_variance(),
                "mean": bin.get_representation(),
                "slope": slope
            }
            segment3D.append(result)

        cluster = ut_cluster.cluster_xMean_Dy(binsList=window,
                                              kmax=windowSize,
                                              hist_bin=20)
        ut_plotly.plot3DClusterDYTemp(samples=cluster["samples"],
                                      clusters=cluster["clusters"],
                                      centers=cluster["centers"])

        resultCluster = ut_gen.genHistrogram_Dict(binsList=segment3D,
                                                  hist_bin=20)

        jsMDF, divMDF = ut_bokeh.JSandDivRawAndBin(
            x_axis=FtimestampMDF,
            y_raw=FdataMDF,
            y_axisList=[sketchInstances],
            legend_labelList=["dyBin"],
            namesList=[indexBinList],
            title="{} window size :{}".format(fileName, windowSize))

        jsCl, divCl = ut_bokeh.JSandDivHistrogramCluster(
            meansClass=resultCluster['meansClass'],
            varsClass=resultCluster['varsClass'],
            slopesClass=resultCluster['slopesClass'])
    return render_template("html/cluster/cluster_plot.html",
                           listFiles=listFiles,
                           jsMDF=jsMDF,
                           divMDF=divMDF,
                           jsCl=jsCl,
                           divCl=divCl)
Exemplo n.º 22
0
def export_JsDiv_saxcompare(data, add_on=[]):
    TOOLTIPS = [("index", "$index"), ("(x,y)", "@x{0,0.000000}, $y"),
                ("UTC", "@UTC")]
    instances = [float(i) for i in data["instances"]]
    timestamp = [float(i) for i in data["timestamp"]]
    instances_nor = TimeSeriesScalerMeanVariance(mu=0., std=1.).fit_transform(
        [instances])
    UTC = ut_astro.convertList_MJDtoUTC(timestamp)
    fileName = data["fileName"]
    windowSize = int(data["windowSize"])

    plot = figure(tooltips=TOOLTIPS,
                  title="Result : {}".format(fileName),
                  x_axis_label='time',
                  y_axis_label='Flux',
                  sizing_mode="stretch_both")
    source = ColumnDataSource(
        data=dict(x=timestamp, y=list(instances_nor[0].ravel()), UTC=UTC))
    plot.line('x',
              'y',
              source=source,
              line_alpha=0.5,
              color="black",
              line_width=2,
              legend_label="Raw data")
    plot.circle('x',
                'y',
                source=source,
                alpha=0.7,
                color="black",
                legend_label="Raw data")

    # Dybin
    corePlot = sketchDyBinService(windowSize=windowSize,
                                  initialBin=5,
                                  isOnline=False)
    sketchInstances = corePlot.sketchMode(
        instances=list(instances_nor[0].ravel()))
    sourceDy = ColumnDataSource(data=dict(x=timestamp, y=sketchInstances))
    plot.line('x',
              'y',
              source=sourceDy,
              line_alpha=1,
              color=Bokeh5[0],
              line_width=3,
              legend_label="DyBin")

    # Hoedd
    #
    # Hoeffding_dy = ut_gen.genListHoeffdingBin(instances=list(instances_nor[0].ravel()), timestamp=timestamp,
    #                            windowSize=windowSize, initialBin=5)
    # sourceHoeffding = ColumnDataSource(data=dict(x=timestamp, y=Hoeffding_dy["sketchInstances"]))
    # plot.line('x', 'y', source=sourceHoeffding, line_alpha=1, color=Bokeh5[1], line_width=3,
    #           legend_label="Hoeffding")

    # PAA
    data_PAA = ut_gen.genListPAA(instances_nor=instances_nor,
                                 timestamp=timestamp,
                                 windowSize=windowSize)
    sourcePAA = ColumnDataSource(
        data=dict(x=data_PAA['timestamp'], y=data_PAA['sketchInstances']))
    plot.line('x',
              'y',
              source=sourcePAA,
              line_alpha=1,
              color=Bokeh5[2],
              line_width=3,
              legend_label="PAA")

    # SAX
    data_SAX = ut_gen.genListSAX(instances_nor=instances_nor,
                                 timestamp=timestamp,
                                 windowSize=windowSize,
                                 n_sax_symbols=25)
    sourceSAX = ColumnDataSource(
        data=dict(x=data_SAX['timestamp'], y=data_SAX['sketchInstances']))
    plot.line('x',
              'y',
              source=sourceSAX,
              line_alpha=1,
              color=Bokeh5[3],
              line_width=3,
              legend_label="SAX")

    # 1D-SAX
    data_1DSAX = ut_gen.genList1D_SAX(instances_nor=instances_nor,
                                      timestamp=timestamp,
                                      windowSize=windowSize)
    source1DSAX = ColumnDataSource(
        data=dict(x=data_1DSAX['timestamp'], y=data_1DSAX['sketchInstances']))
    plot.line('x',
              'y',
              source=source1DSAX,
              line_alpha=1,
              color=Bokeh5[4],
              line_width=3,
              legend_label="1D-SAX")

    if add_on:
        for row in add_on:
            if row["type"] == "anwser":
                start_point = timestamp[row["start"]]
                end_point = timestamp[row["end"]]
                plot = ut_bok.plotAnswerBox(plot=plot,
                                            start_point=start_point,
                                            end_point=end_point)

    plot.legend.border_line_width = 3
    plot.legend.click_policy = "hide"
    plot.legend.border_line_color = "navy"
    plot.legend.border_line_alpha = 0.
    plot.xaxis.axis_label_text_font_size = "16pt"
    plot.xaxis.major_label_text_font_size = "13pt"
    plot.yaxis.axis_label_text_font_size = "16pt"
    plot.yaxis.major_label_text_font_size = "13pt"
    js, div = components(plot)
    return js, div