Пример #1
0
def getDistribution(stateDict, baseList, refList, movedObject):
    # データの数を取得しておく
    size = len(stateDict["before"])
    # 前後のデータ数が違えばそこでエラー終了
    if size != len(stateDict["after"]):
        print("[ViewPointManager]getDistribution:different size")
        return []
    # ゼロ個だったら何かおかしいのでエラー終了
    if size == 0:
        print("[ViewPointManager]getDistribution:size is zero")
        return []
    move = []
    transafter = []
    for i in range(size):
        transafter.append( \
            encoder.transformforViewPoint( \
                stateDict["after"][i], baseList, refList \
            ) \
        )
    # 選択した物体の最終位置のブレをスコアとして返す
    # 観点変換はここで使う
    diffDict = {}
    for o in movedObject:
        diffDict[o] = []
    for i in range(size):
        for s in movedObject:
            diffDict[s].append(np.array(transafter[i][s]))
    meanDict = {}
    for s in movedObject:
        meanDict[s] = sum(diffDict[s]) / size

    diff = 0
    for i in range(size):
        for s in movedObject:
            diff += np.linalg.norm(np.array(transafter[i][s]) - meanDict[s])
    return [meanDict, diff]
Пример #2
0
def getStateswithViewPoint(filepathList, baseList, refList, detail=False):
    output = {}
    for fpath in filepathList:
        if fpath[-4:] != ".csv":
            if detail == True:
                text = "[ViewPointManager]getSateswithViewPoint:"
                print(text + fpath + " is not csv file")
            continue
        # パスをキーにして管理すると面倒なのでファイル名に変更
        filename = os.path.basename(fpath)
        # print("file:"+filename)
        output[filename] = []
        with open(fpath, "r", encoding="utf-8") as f:
            while True:
                line = f.readline()
                if line == "":
                    break
                bstate = encoder.encodeState(line)
                astate = encoder.transformforViewPoint(bstate, baseList,
                                                       refList)
                # data   = encoder.serialize(astate)
                data = astate
                output[filename].append(data)
    return output