Ejemplo n.º 1
0
    def update(self):

        #Update Stuff
        if not self.plan:
            x0 = drone_pos.pose.position.x
            y0 = drone_pos.pose.position.y
            _, _, yaw0 = euler_from_quaternion(
                (drone_pos.pose.orientation.x, drone_pos.pose.orientation.y,
                 drone_pos.pose.orientation.z, drone_pos.pose.orientation.w))
            t = TicToc()
            t.tic()
            path = self.proxy(x0, y0, yaw0, self.route[0]).plannedPath
            t.toc()
            print(t.elapsed)

            if len(path.poses) > 0:
                rospy.loginfo("pp success")
                self.first_pose = False
                self.plan = True
                print('We have sent the position!')
                return pt.common.Status.SUCCESS
        # if hitta == False:
            else:
                rospy.loginfo("pp failure")
                return pt.common.Status.FAILURE

        else:
            #rospy.loginfo("pp running")
            return pt.common.Status.SUCCESS
def main():
    p = Pool(8)
    args = parse_arguments()
    sdf_dir = os.path.join(args.sdf_dir)
    list_of_sdf_files = [filename for filename in read_sdf_file(sdf_dir)]
    print(list_of_sdf_files)
    proc = Conformer_generator(args)
    t = TicToc()
    t.tic()

    for file in list_of_sdf_files:
        sdf_file_name = file.split('_')[0]
        print(sdf_file_name)
        full_directory_path = os.path.join(args.conformers_file_dir,
                                           '{}'.format(sdf_file_name))
        os.makedirs(full_directory_path)
        os.chdir(full_directory_path)
        try:
            molecule_object_from_sdf_file = MoleculeReader(
                os.path.join(sdf_dir, file))
            list_of_molecules = [m for m in molecule_object_from_sdf_file]

            p.map(proc.generate_conformer, list_of_molecules)
        except:
            print("can not read sdf file {}".format(file))

    t.toc()
    print(t.elapsed)
Ejemplo n.º 3
0
    def start(self):
        """
        start the job

        the job includes the following things:

            * fetch new unverified revisions
            * score this revisions
            * filter all suspected bad revisions
            * insert revisions to table
        """

        t = TicToc()
        t.tic()

        sql_user_name = read_sql_user_name()
        wikishield_conn = WS(sql_user_name)
        wikishield_conn.start()
        lm = LangsManager()
        for lang_name in lm.langs_names:
            lang = lm.get_lang(lang_name)
            clf = WikiClassifier(lang, wikishield_conn.ctx)
            clf.learn(limit=None)
            file_path = WikiClassifier.PICKLE_FOLDER_PATH + '/' + lang_name + '.pickle'
            clf.pickle_to_file(file_path)

        wikishield_conn.close()

        t.toc()
        print("learn job summary: elapsed time = ", t.elapsed,
              "seconds")  #TODO: remove this
def main():
    p = multiprocessing.Pool(8)

    args = parse_arguments()
    sdf_dir = os.path.join(args.sdf_dir)
    list_of_sdf_files = [filename for filename in read_sdf_file(sdf_dir)]
    #print((list_of_sdf_files))

    t = TicToc()
    if list_of_sdf_files:
        p.map(test_func, list_of_sdf_files)
    t.tic()





        #molecule_object_from_sdf_file = MoleculeReader(os.path.join(sdf_dir, file))
        #list_of_molecules = [m for m in molecule_object_from_sdf_file]

        # for mol in molecule_object_from_sdf_file:
        #     conformers = generate_confs(mol, int(args.number_of_conformers), 8)
        #
        #     with MoleculeWriter('%s_conformers.mol2' % mol.identifier) as mol_writer:
        #         for c in conformers:
        #             mol_writer.write(c.molecule)






    t.toc()
    print(t.elapsed)
Ejemplo n.º 5
0
def opt_sat(sat_files, hh_sat, num_run):

    # uf_li=list(pathlib.Path(dir_name).glob("**/*.cnf"))

    p, pattern=os.path.split(sat_files)
    uf_li=[os.path.join(p, x) for x in os.listdir(p) if re.fullmatch(pattern, x)]
    num_instance=len(uf_li)

    uf_mutation=[[0]*num_run for _ in range(num_instance)]
    uf_mutation_to_max_goal=[[0]*num_run for _ in range(num_instance)]
    uf_goal=[[0]*num_run for _ in range(num_instance)]
    uf_runtime=[[0]*num_run for _ in range(num_instance)]

    uf_num=[[0]*num_instance for _ in range(2)]
    uf_global_ind=[list() for _ in range(2)]
    uf_mutation_li=[[list() for _ in range(num_instance)] for _ in range(2)]
    uf_goal_li=[[list() for _ in range(num_instance)] for _ in range(2)]
    uf_runtime_li=[[list() for _ in range(num_instance)] for _ in range(2)]

    t=TicToc()

    for instance_id in range(num_instance):
        logging.info("======NEXT INSTANCE:{}======".format(instance_id))

        sat=Sat(str(uf_li[instance_id]))
        sat.print_inner_var()

        for run_id in range(num_run):

            logging.info("------NEXT RUN:{}------".format(run_id))
            t.tic()
            sat.reset_solution()
            hh_sat.reset_benchmark(sat)
            hh_sat.optimize()
            hh_sat.stat()
            t.toc()

            uf_mutation[instance_id][run_id]=hh_sat.num_mutate
            uf_mutation_to_max_goal[instance_id][run_id]=hh_sat.num_mutate_to_max_goal
            uf_goal[instance_id][run_id]=hh_sat.max_goal
            uf_runtime[instance_id][run_id]=t.elapsed

            # find global optima within max_mutate
            if hh_sat.max_goal==sat.num_cla:
                uf_num[0][instance_id]+=1
                uf_global_ind[0].append((instance_id, run_id))
                uf_mutation_li[0][instance_id].append(hh_sat.num_mutate)
                uf_goal_li[0][instance_id].append(hh_sat.max_goal)
                uf_runtime_li[0][instance_id].append(t.elapsed)
            # didn't find global optima within max_mutate
            else:
                uf_num[1][instance_id]+=1
                uf_global_ind[1].append((instance_id, run_id))
                uf_mutation_li[1][instance_id].append(hh_sat.num_mutate)
                uf_goal_li[1][instance_id].append(hh_sat.max_goal)
                uf_runtime_li[1][instance_id].append(t.elapsed)

    return uf_li, (uf_mutation, uf_goal, uf_runtime, uf_mutation_to_max_goal), (uf_num, uf_global_ind, uf_mutation_li, uf_goal_li, uf_runtime_li)
Ejemplo n.º 6
0
def task1(file_path):
    data = pd.read_csv(
        file_path,
        usecols=(
            0,  # age
            1,  # job
            15,  # p outcome
            4,  # balance
            5,  # default
            18,  # y - classifier
            7,  # loan - classifier
        ))
    timer = TicToc()

    # Data clean-up
    data = data_transform(data)
    print_table(data.head())

    X_data = (data.drop("y", 1))
    Y_data = (data["y"])
    A_data = (data.drop("loan", 1))
    B_data = (data["loan"])

    # Training/testing sets
    X_train = X_data[:-250]
    X_test = X_data[-250:]
    Y_train = Y_data[:-250]
    Y_test = Y_data[-250:]

    A_train = A_data[:-250]
    A_test = A_data[-250:]
    B_train = B_data[:-250]
    B_test = B_data[-250:]

    # Apply linear regression model
    # regr = linear_model.LinearRegression()
    timer.tic()
    regr = svm.SVC(gamma=0.5, C=100)
    regr.fit(X_train, Y_train)
    prediction_x = regr.predict(X_test)
    timer.toc()
    print(
        f"Y-classified: {evaluate_result(prediction_x, Y_test.values)}% matched in {timer.elapsed}s"
    )

    timer.tic()
    svc = svm.SVC(gamma=0.5, C=100)
    svc.fit(A_train, B_train)
    prediction_a = svc.predict(A_test)
    timer.toc()
    print(
        f"Loan-classified: {evaluate_result(prediction_a, B_test.values)}% matched in {timer.elapsed}s"
    )

    plt.show()
Ejemplo n.º 7
0
class ElapsedTime(object):
    """
    Measure the elapsed time from "elapsed.t.tic()" to "elapsed.elapsed()"
    """
    def __init__(self):
        self.t = TicToc(__name__)

    def elapsed(self):
        self.t.toc()
        _elapsed = self.t.elapsed
        d = timedelta(seconds=_elapsed)
        logger.info('< {} >'.format(d))
Ejemplo n.º 8
0
def task6(file_path):
    data = pd.read_csv(
        file_path,
        usecols=(
            0,  # age
            1,  # job
            2,  # martial
            3,  # education
            7,  # loan
            18,  # y - classifier
        ))
    labels = data.columns.values
    timer = TicToc()

    # Data clean-up
    data = data_transform(data)

    print_table(data.head())

    X_data = (data.drop("y", 1))
    Y_data = (data["y"])

    # Training/testing sets
    X_train = X_data[:-10000]
    X_test = X_data[-10000:]
    Y_train = Y_data[:-10000]
    Y_test = Y_data[-10000:]

    A_train = X_data[:-10]
    A_test = X_data[-10:]
    B_train = Y_data[:-10]
    B_test = Y_data[-10:]

    dec_tree = DecisionTreeClassifier()
    dec_tree_underfit = DecisionTreeClassifier()

    timer.tic()
    dec_tree.fit(X_train, Y_train)
    prediction_dec = dec_tree.predict(X_test)
    timer.toc()
    print(
        f"DecisionTreeClassifier: {evaluate_result(prediction_dec, Y_test.values)}% matched in {timer.elapsed}s"
    )

    timer.tic()
    dec_tree_underfit.fit(A_train, B_train)
    prediction_underfit = dec_tree.predict(A_test)
    timer.toc()
    print(
        f"DecisionTreeClassifier-Underfit: {evaluate_result(prediction_underfit, B_test.values)}% matched in {timer.elapsed}s"
    )
Ejemplo n.º 9
0
def task2(file_path):
    data = pd.read_csv(
        file_path,
        usecols=(
            0,  # age
            2,  # martial
        ))
    labels = data.columns.values
    colors = ["r.", "g.", "b."]
    timer = TicToc()

    # Data clean-up
    data = data_transform(data)
    print_table(data.head())

    classifier = KMeans(n_clusters=3)
    classifier.fit(data)
    center = classifier.cluster_centers_
    kmeans_labels = classifier.labels_

    timer.tic()
    print(f"INFO: Rendering {len(data)} data points - ")
    print("INFO: This may take a while...")
    for index in range(len(data)):
        if (0 < index and index % 1000 == 0):
            print(f"INFO: Completed {index} iterations")
        plt.plot(
            data[labels[0]][index],
            data[labels[1]][index],
            colors[kmeans_labels[index]],
            markersize=10,
        )
    timer.toc()
    print(
        f"Render time for all data points: {timer.elapsed}s ({seconds_to_minutes(timer.elapsed)}min)"
    )

    plt.scatter(
        center[:, 0],
        center[:, 1],
        marker="o",
        s=150,
    )
    plt.show()
Ejemplo n.º 10
0
    def test_maze(self):
        size = 20
        random.seed(1)
        m = make_maze(size, size)
        w = len(m.split('\n')[0])
        h = len(m.split('\n'))

        start = (1, 1)  # we choose to start at the upper left corner
        goal = (w - 2, h - 2)  # we want to reach the lower right corner

        t = TicToc()
        t.tic()
        _path = list(MazeSolver(m).astar(start, goal))
        t.toc()
        # print("Github", t.elapsed)

        t.tic()
        path, length = astar(MazeProblem(m, start, goal))
        t.toc()
Ejemplo n.º 11
0
def task7(file_path):
    data = pd.read_csv(
        file_path,
        usecols=(
            5,  # balance
            7,  # loan
            16,  # bank_arg1
            18,  # y - classifier
        ))
    labels = data.columns.values
    timer = TicToc()

    # Data clean-up
    data = data_transform(data)
    print_table(data.head())

    X_data = (data.drop("y", 1))
    Y_data = (data["y"])

    X_train = X_data[:-1]
    X_test = X_data[-1:]
    Y_train = Y_data[:-1]
    Y_test = Y_data[-1:]

    dec_tree = DecisionTreeClassifier()
    random_forest = RandomForestClassifier()

    timer.tic()
    dec_tree.fit(X_train, Y_train)
    prediction_dec = dec_tree.predict(X_test)
    timer.toc()
    print(
        f"DecisionTreeClassifier: {evaluate_result(prediction_dec, Y_test.values)}% matched in {timer.elapsed}s"
    )

    timer.tic()
    random_forest.fit(X_train, Y_train)
    prediction_for = random_forest.predict(X_test)
    timer.toc()
    print(
        f"RandomForestClassifier: {evaluate_result(prediction_for, Y_test.values)}% matched in {timer.elapsed}s"
    )
Ejemplo n.º 12
0
    def start(self):
        """
        start the job

        the job includes the following things:

            * fetch new unverified revisions
            * score this revisions
            * filter all suspected bad revisions
            * insert revisions to table
        """

        t = TicToc()
        t.tic()

        local_conn, wiki_conn = conn_mng.open_connections(self.lang)
        wiki_classifier = reload_classifier(self.lang.name)

        wikimedia_db, wikishield_db, wikimedia_api = conn_mng.init_sources(wiki_conn.ctx, local_conn.ctx, self.lang)
        
        max_rev_id = None

        revs, _ = wikimedia_db.fetch_natural_revs(self.lang, self._NUM_REVS, max_rev_id,
                                                  self._EX_PART_SIZE, self._MIN_PART_SIZE)

        for rev in revs:
            diff_text, page_title = wikimedia_api.fetch_rev_diff(rev['wiki_id'], rev['parent_id'])
            rev['page_title'] = page_title
            print(rev)
            words_content = extract_added_words(self.lang, diff_text)
            if len(words_content) > 0:
                score = wiki_classifier.score_rev(words_content)
                rev['score'] = bad_score = score[0]
                if bad_score >= self._MIN_BAD_SCORE:
                    wikishield_db.insert_rev(rev, diff_text, words_content)
        wikishield_db.commit()

        conn_mng.close_connections(local_conn, wiki_conn)

        t.toc()
        print("add_revs_job: elapsed time = ", t.elapsed, "seconds") #TODO: remove this
Ejemplo n.º 13
0
def main():
    """Used to test the Archipelago class.

    Tests 3 random seeds between 0 and 65535 with weathering values of 1, 3, 5 and sea_level values between -20 and 32
    in steps of 4.
    """
    t = TicToc()
    t.tic()
    args = []
    for seed in random.sample(range(0, int("0xFFFF", 16)), 3):
        for weathering in [1, 3, 5]:
            for sea_level in range(-20, 32, 4):
                sea_level = sea_level / 100  # range() can't be used to generate a list of floats
                args.append([seed, weathering, sea_level])
    pool = Pool(multiprocessing.cpu_count())
    print("Total archipelagos being generated:", len(args))
    pool.starmap(test, args)
    pool.close()
    pool.join()
    t.toc()
    print("Total time elapsed (seconds): {0:.2f}".format(t.elapsed))
Ejemplo n.º 14
0
def train_model(classifier,
                feature_vector_train,
                label,
                feature_vector_valid,
                is_neural_net=False):
    t = TicToc()  ## TicToc("name")
    t.tic()
    # fit the training dataset on the classifier
    classifier.fit(feature_vector_train, label)

    # predict the labels on validation dataset
    predictions = classifier.predict(feature_vector_valid)

    if is_neural_net:
        predictions = predictions.argmax(axis=-1)
    t.toc()
    print("Time elapsed to train: {}".format(t.elapsed))
    # return metrics.f1_score(predictions, valid_y) * 100
    tn, fp, fn, tp = metrics.confusion_matrix(predictions, valid_y).ravel()
    print("Confusion matrix results:")
    print("True neg: {}\nFalse pos: {}\nFalse neg: {}\nTrue pos:{}".format(
        tn, fp, fn, tp))
    print()
    return metrics.f1_score(predictions, valid_y) * 100
Ejemplo n.º 15
0
def task3(file_path):
    binning3 = preprocessing.KBinsDiscretizer(n_bins=3)
    binning6 = preprocessing.KBinsDiscretizer(n_bins=6)
    binning9 = preprocessing.KBinsDiscretizer(n_bins=9)

    data = pd.read_csv(
        file_path,
        usecols=(
            7,  # loan - classifier
            16,  # bank_arg1
            18,  # y - classifier
        ))
    labels = data.columns.values
    timer = TicToc()

    # Data clean-up
    data = data_transform(data)

    print_table(data.head())

    X_data = (data.drop("bank_arg1", 1))
    Y_data = (data["bank_arg1"])

    # Training/testing sets
    X_train = X_data[:-2500]
    X_test = X_data[-2500:]
    Y_train = Y_data[:-2500]
    Y_test = Y_data[-2500:]

    timer.tic()
    binning3.fit(X_data)
    prediction3 = binning3.transform(X_data)
    timer.toc()

    timer.tic()
    binning6.fit(X_data)
    prediction6 = binning6.transform(X_data)
    timer.toc()

    timer.tic()
    binning9.fit(X_data)
    prediction9 = binning9.transform(X_data)
    timer.toc()

    # TODO: Fix evaluation for matrix
    acc3 = evaluate_result(prediction3, Y_data.values)
    acc6 = evaluate_result(prediction6, Y_data.values)
    acc9 = evaluate_result(prediction9, Y_data.values)

    print(f"Binning with 3 units: {acc3}% matched in {timer.elapsed}s")
    print(f"Binning with 6 units: {acc6}% matched in {timer.elapsed}s")
    print(f"Binning with 9 units: {acc9}% matched in {timer.elapsed}s")
Ejemplo n.º 16
0
def _run_exec(sandbox_directory, output, problem):
    t = TicToc()
    status = Status.NOT_RUN

    time_limit, mem_limit, _, _, _ = _read_config_file(problem)
    script_location = sandbox_directory + 'exec_script.sh'
    exec_location = sandbox_directory + output.split('/')[-1]

    print('script = {}\nexec = {}'.format(script_location, exec_location))

    t.tic()
    process = Popen([script_location, exec_location], stdout=PIPE, stderr=PIPE)
    stdout, stderr = process.communicate()
    elapsed = t.toc()

    if os.path.exists('./{}.out'.format(problem)):
        shutil.copy('./{}.out'.format(problem), sandbox_directory)
    else:
        status = Status.WRONG_ANSWER

    return_code = int(re.findall(r'\d+', stdout.decode('utf-8'))[0])
    print('return_code = {}'.format(return_code))

    if return_code == int(Status.SIGINT):
        status = Status.TLE
    elif return_code == int(Status.SIGSEGV):
        status = Status.SIGSEGV
        print("SEG FAULT")
    elif return_code == int(Status.SIGFPE):
        status = Status.SIGFPE
    elif return_code == int(Status.SIGABRT):
        status = Status.SIGABRT

    if status == Status.NOT_RUN and elapsed > time_limit:
        status = Status.TLE

    # Test for MLE

    if status == Status.NOT_RUN and return_code == 0:
        status = Status.OK

    return status, round(elapsed, 3), stdout
Ejemplo n.º 17
0
def BlobRemoveThread(
    blobRemoveQueue: queue.SimpleQueue,
    credentials: str,
    bucketName: str,
    isTrialRun: bool,
    logLevel: str,
    threadId: int
) -> None:
    # Set logging level and get logger
    setLogingLevel(logLevel)
    logger = logging.getLogger(__name__)

    # Get GCS bucket
    credentials = Credentials.from_service_account_info(json.loads(credentials))
    client = storage.Client(project=credentials.project_id, credentials=credentials)
    bucket = client.get_bucket(bucketName)

    # Create stats variables
    ticToc = TicToc()

    while True:
        # Get task
        task = blobRemoveQueue.get()
        if task is None:
            break

        # Extract task
        name: str = task[0]

        ticToc.tic()
        if not isTrialRun:
            try:
                bucket.delete_blob(name)
            except:
                pass

        logger.info('× {}, elapsed: {:.3f}s, thread: {}'.format(
            name,
            ticToc.toc(),
            threadId
        ))
Ejemplo n.º 18
0
    def count_words(self):
        return self.__count_words(self.root)

    def __count_words(self, node, count=0):
        if node.isEndOftheWord:
            count += 1

        for key in node.childrens.keys():
            nxt_node = node.childrens[key]

            count = self.__count_words(nxt_node, count)

        return count


t = Trie()
clock = TicToc()
db = requests.get(
    'https://raw.githubusercontent.com/dwyl/english-words/master/words_dictionary.json'
).json().keys()

for d in db:
    t.insert(d)

clock.tic()
print(t.count_words())
clock.toc()

print(clock.elapsed)
Ejemplo n.º 19
0
#Start Time Counter
t = TicToc()
t.tic()

#===================LOAD CONFIG FILE=======================================
with open('converterCfg.json') as json_file:
    cfg = json.load(json_file)

path = cfg['path']
rounds = cfg['tar_rounds']
thread_pool_size = cfg['thread_pool_size']

dir_list = glob(path + '/*/')

#===================RUN TAR3===============================================
print("Starting Treatment Learning...")

list_approach = []
list_rounds = []
#prepara task list for multithreading
for run_dir in dir_list:
    for i in range(1, rounds + 1):
        list_approach.append(run_dir)
        list_rounds.append(i)

pool = ThreadPool(thread_pool_size)

results = pool.starmap(tarThread, zip(list_approach, list_rounds))

print("TAR Total Time elapsed: %.2fs" % (t.toc()))
Ejemplo n.º 20
0
def task4(file_path):
    data = pd.read_csv(
        file_path,
        usecols=(
            0,  # age
            1,  # job
            2,  # martial
            3,  # education
            7,  # loan
            18,  # y - classifier
        ))
    labels = data.columns.values
    timer = TicToc()

    # Data clean-up
    data = data_transform(data)

    print_table(data.head())

    X_data = (data.drop("y", 1))
    Y_data = (data["y"])

    # Training/testing sets
    X_train = X_data[:-10000]
    X_test = X_data[-10000:]
    Y_train = Y_data[:-10000]
    Y_test = Y_data[-10000:]

    kneighbors = KNeighborsClassifier()
    dec_tree = DecisionTreeClassifier()
    gauss = GaussianNB()
    svc = svm.SVC()
    random_forest = RandomForestClassifier()

    timer.tic()
    kneighbors.fit(X_train, Y_train)
    prediction_kn = kneighbors.predict(X_test)
    timer.toc()
    print(
        f"KNeighborsClassifier: {evaluate_result(prediction_kn, Y_test.values)}% matched in {timer.elapsed}s"
    )

    timer.tic()
    dec_tree.fit(X_train, Y_train)
    prediction_dec = dec_tree.predict(X_test)
    timer.toc()
    print(
        f"DecisionTreeClassifier: {evaluate_result(prediction_dec, Y_test.values)}% matched in {timer.elapsed}s"
    )

    timer.tic()
    gauss.fit(X_train, Y_train)
    prediction_g = gauss.predict(X_test)
    timer.toc()
    print(
        f"GaussianNB: {evaluate_result(prediction_g, Y_test.values)}% matched in {timer.elapsed}s"
    )

    timer.tic()
    svc.fit(X_train, Y_train)
    prediction_svc = svc.predict(X_test)
    timer.toc()
    print(
        f"svm.SVC: {evaluate_result(prediction_svc, Y_test.values)}% matched in {timer.elapsed}s"
    )

    timer.tic()
    random_forest.fit(X_train, Y_train)
    prediction_for = random_forest.predict(X_test)
    timer.toc()
    print(
        f"RandomForestClassifier: {evaluate_result(prediction_for, Y_test.values)}% matched in {timer.elapsed}s"
    )
Ejemplo n.º 21
0
def mandalorian():
    global UpKey,DownKey,LeftKey,RightKey,PauseKey,QuitKey,Bullet,sheildkey
    tik =TicToc()
    tik.tic()
    STEP = 0.0001;    me = person(50,9);    bsp = boss();    score=0;    lives=5;    co=[];    ob=[];    mag=[];    dra=[];    drag=[];    bu=[];    sp=[];    shstart=0;    spstart=0;    dragonp=0;    sheildp=0;    sheildav=1;    bossm=0;    bb=[];    speed=1;    speedp=0;    time = 60;    bossh=100;    t=0;
    bt=2000
    
    while True:
        tty.setcbreak(sys.stdin.fileno())

        t+=1
        sleep(0.1)
        system('clear')
        # key event
        key_pressed()
        if UpKey:
            UpKey=False
            me.upy(-0.2)
            # if dragonp:                     #on for dragon movement
            #     me.dr-=0.02
        if RightKey:
            RightKey=False
            me.upx(0.1)
        if LeftKey:
            LeftKey=False
            me.upx(-0.1) 
        if Bullet:
            Bullet=False
            bu.append(spr(me.getx()+2,me.gety(),'>'))
        # if DownKey:                         #on for dragon movement
        #     if dragonp:
        #         me.dr+=0.02

        if QuitKey:
            print("GAME OVER")
            return
       	if sheildkey:
       		sheildkey=False
       		if sheildav:
       			sheildp=1 
        		sheildav=0
        		shstart=int(tik.elapsed)
       	#########################################################

        if t%33==0 and bossm==0:
            if t%99==0:createobs(ob)   
            elif (t+33)%99==0:createcoins(co)
            else:
                i=randint(0,2)
                if i==0:createobs(ob)
                elif i==1:createpower(sp,'P')
                else:createpower(dra,'D')
        
        if t%100==0:
            mag.append(spr(135,randint(5,35),'M'))
        

        if t>bt:                         ## boss mode on
            bossm=1
                
        if speedp==1:
            speed=2.5
        else: speed=1.5   
        
        if dragonp==0:
            me.update()
            me.printp(sheildp)
        else:
            me.updatex()
            if t%10>4:drag.append(dragon(me.getx(),me.gety()+t%5,"D"))
            else: drag.append(dragon(me.getx(),me.gety()+4-t%5,"D"))
        
        if bossm:                           ## boss mocd on
            # bb have boss bullets
            if t%4==0:
                bx=95-me.getx()
                by=25-me.gety()
                dis = floor(sqrt((bx)**2+(by)**2))
                vx=(bx/dis)*2+1
                vy=(by/dis)*2
                bb.append(bull(95,bsp.gety(),vx,vy,'*'))
            d =0
            if me.gety()-bsp.gety() > 0:d=1
            bsp.update(d)
            bsp.printb()
            
            for i in bu:  # bullet cause it have differt direct
                i.update(-2)
                if i.gety()>35:
                	bu.remove(i)
                if i.getx()>143:
                	bu.remove(i)
                if i.valid:
                    i.printsp(color.PURPLE)
                else:
                    bu.remove(i)
            for i in bb:  #bossb
                i.update()
                if i.valid:
                    i.printsp(color.RED)
                else:
                    bb.remove(i)        
            
            #boss hit me
            for i in bb:
                if abs(me.getx()-i.getx())<2 and abs(me.gety()-i.gety())<1:
                    bb.remove(i)
                    lives-=1
            # me hit boss
            for i in bu:
                k=(i.gety()-bsp.gety())
                if abs(95-i.getx())<=2 and k<8 and k>=0 :
                    bu.remove(i)
                    bossh-=5 
               
        else:            
            #coins/obstacles/powerup print
               
            for i in co:        
                i.update(speed) 
                if i.valid:
                    i.printsp(color.BOLD+color.YELLOW)
                else:
                    co.remove(i)     
            for j in ob:
                for i in j:
                    i.update(speed) 
                    if i.valid:
                        i.printsp(color.BOLD+color.RED)
                    else:
                        ob.remove(j)
                        break

            for i in sp:        
                i.update(speed) 
                if i.valid:
                    i.printsp(color.DARKCYAN)
                else:
                    sp.remove(i) 
            for i in dra:        
                i.update(speed) 
                if i.valid:
                    i.printsp(color.PURPLE)
                else:
                    dra.remove(i)                                                                     

            for i in bu:  # bullet cause it have differt direct
                i.update(-2)
                if i.gety()>35:
                	bu.remove(i)
                if i.getx()>143:
                 	bu.remove(i)
                if i.valid:
                    i.printsp(color.PURPLE)
                else:
                    bu.remove(i)

            #coin select
            for i in co:
                if abs(me.getx()-i.getx())<2 and abs(me.gety()-i.gety())<1:
                    score+=1
                    co.remove(i)
            
            #collision
            for j in ob:
                for i in j:
                    if sheildp==1:
                        continue
                    if abs(me.getx()-i.getx())<2 and abs(me.gety()-i.gety())<1:
                        ob.remove(j)
                        if dragonp==0:
                            lives-=1
                        dragonp=0
                        break

            #bullet with obstacls
            for k in bu:    
                for j in ob:
                    for i in j:
                        if abs(k.getx()-i.getx())<1 and (k.gety()-i.gety()<1):
                            ob.remove(j)
                            break

            #powerup
            for i in sp:
                if abs(me.getx()-i.getx())<1 and abs(me.gety()-i.gety())<1:
                    sp.remove(i)
                    spstart=int(tik.elapsed)
                    speedp=1        
            
            for i in dra:
                if abs(me.getx()-i.getx())<1 and abs(me.gety()-i.gety())<1:
                    dra.remove(i)
                    dragonp=1         
            #magnet effect
            for i in mag:
                if i.valid==0:
                    mag.remove(i)
                    continue
                i.printsp(color.DARKCYAN)
                disx=i.getx()-me.getx()
                disy=i.gety()-me.gety()
                dis=floor(sqrt(disx**2+disy**2))        
                if dis!=0:
                    me.upx((disx//dis)*2)
                    me.upy((disy//dis)*2)
                i.update(speed)
                
            #dragon if it come
            for i in drag:
                if i.valid==0:
                    drag.remove(i)
                    continue
                i.printsp(color.GREEN)
                i.update()
            if dragonp==0:
                drag=[]
                    

        #sky and ground
        sky()
        if lives==0:
            print("GAME OVER")
            return      

        tik.toc()
        ct=int(tik.elapsed)
        # print("\033[41;0f {},{}".format(me.x,me.y))
        # print("\033[42;0f {},{}".format(me.velx,me.vely))
        print("\033[1;0f score:{}".format(score))
        print("\033[2;0f lives:{}".format(lives))
        if sheildav==0:
            if 60-(ct-shstart)>=0:
                print("\033[3;0f sheild:{} ({})".format(sheildav,60-(ct-shstart)))
            else:
                sheildav=1    
        else:
            print("\033[3;0f sheild:{}  press t".format(sheildav))
        
        if sheildp:
        	if 10-(ct-shstart)<=0:
        		sheildp=0


        if speedp:
            if 20-(ct-spstart)>=0:
                print("\033[4;0f speed:{} ({})".format(speedp,20-(ct-spstart)))
            else:
                speedp=0
        else:
            print("\033[4;0f speed:{}".format(speedp))

        print("\033[5;0f dragon:{}".format(dragonp))
            
        if bossm:
            print("\033[3;90f BOSS HEALTH:{}".format(bossh))

            if bossh < 1 :
                print("\033[10;80f YOU SAVED BABY YODA! :)")
                return
          
        
        time=200-ct
        if time == 0:
            print("TIME OVER")
            return
        print("\033[6;0f time:{}".format(time))
        if bossm==0:
        	print("\033[3;50f percentage:{}".format(int((t*100)/bt)))
Ejemplo n.º 22
0
def detect_motion(frameCount):
    # grab global references to outputFrame
    global outputFrame
    outputFrame = None

    #Create timer
    timer = TicToc()

    # initialize the motion detector and the total number of frames
    # read thus far
    md = SingleMotionDetector(accumWeight=0.2)
    total = 0
    record = True

    # Starts recording
    cap = cv2.VideoCapture(0)
    out = cv2.VideoWriter(filename, get_video_type(filename), 25,
                          get_dims(cap, res))

    # Starts Timer
    timer.tic()

    #Recording starts
    while (record is True):

        # Read video streaming frames and send it to video
        ret, frame = cap.read()
        out.write(frame)

        # read the next frame from the video stream, resize it,
        # convert the frame to grayscale, and blur it

        frame = imutils.resize(frame, width=400)
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        gray = cv2.GaussianBlur(gray, (7, 7), 0)

        # if the total number of frames has reached a sufficient
        # number to construct a reasonable background model, then
        # continue to process the frame
        if total > 32:
            # detect motion in the image
            motion = md.detect(gray)
            #If motion is detected, restart timer
            if (motion is not None):
                print("motion")
                timer.tic()

            if (timer.toc() is not None):
                # print(timer.toc())
                #Stop video if motion has ceased for 10s or lock has been placed by webRTC or user has deactivated the camera
                if ((motion is None and timer.toc() >= 5)
                        or (settings.lock is True)
                        or (settings.active is False)):
                    #Stops recording + Cleanup
                    cap.release()
                    out.release()
                    out = None
                    cap = None
                    md = None
                    total = 0
                    cv2.destroyAllWindows()
                    print("video Ends")
                    record = False
                    #Starts a new thread that will upload the video to Firebase
                    threading.Thread(target=upload).start()

                    break

        # update the background model and increment the total number
        # of frames read thus far
        md.update(gray)
        total += 1

        # acquire the lock, set the output frame, and release the
        # lock
        #with lock:
        outputFrame = frame.copy()
Ejemplo n.º 23
0
class TagFinder():
    def __init__(self):
        self.in_between_wait = .05
        self.driver = self.setup_selenium_driver()
        self.taggees = {}
        self.successful_retrievals = 0
        self.first_url = ""
        self.MAX_RUN_TIME = 360
        self.timer = TicToc()

    def setup_selenium_driver(self):
        usr = os.getenv('fbusername')
        pwd = os.getenv('fbpassword')
        PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
        DRIVER_BIN = os.path.join(PROJECT_ROOT, "chromedriver")

        driver = webdriver.Chrome(executable_path=DRIVER_BIN)
        # driver = webdriver.Firefox(
        #     executable_path='/Users/mattross/webdriver/gecko/v0.26.0/geckodriver-v0.26.0-macos/geckodriver')

        # driver = webdriver.Chrome()
        driver.get('https://www.facebook.com/')
        print("Opened facebook")
        sleep(.1)

        username_box = driver.find_element_by_id('email')
        username_box.send_keys(usr)
        print("Email Id entered")
        sleep(.21)

        password_box = driver.find_element_by_id('pass')
        password_box.send_keys(pwd)
        print("Password entered")

        login_box = driver.find_element_by_id('loginbutton')
        login_box.click()

        sleep(.1)

        return driver

    def get_name_of_tagger(self, driver):
        while True:
            try:
                tager = driver.find_element_by_class_name(taggee_class).text
                if tager is not None:

                    try:
                        tag_date = driver.find_element_by_class_name(
                            "_39g5").text
                        if not self.taggees[tager]["last_tagged"]:
                            self.taggees[tager]["last_tagged"] = tag_date
                        self.taggees[tager]["first_tagged"] = tag_date
                    except Exception as e:
                        # print(e)
                        print("")
                        # print("could not get date ")

                    # Manage Current Speed Of Timer
                    if self.successful_retrievals < 6:
                        self.successful_retrievals += 1
                    else:
                        # print("Retrieved 6 photos in a row successfully, resetting sleep timer")
                        self.successful_retrievals = 0
                        self.in_between_wait = .05

                    if driver.current_url != self.first_url:
                        return tager
                    else:
                        self.stop_iteration_and_display_data()
            except Exception as e:

                # print("Could not load page fast enough, trying again {}".format(e))
                self.in_between_wait += .1
                # print("increasing global wait time to {}".format(self.in_between_wait))
                sleep(self.in_between_wait)
                driver.find_element_by_css_selector('body').send_keys(
                    Keys.ARROW_RIGHT)

    def find_all_tagged_photos(self):

        driver = self.driver
        profile_url = "https://www.facebook.com/Ross.Ross.1080/photos"
        profile_url = "https://www.facebook.com/steviedunbardude/photos"
        profile_url = "https://www.facebook.com/mary.notari"
        if "/photos" not in profile_url:
            profile_url += "/photos"
        driver.get(profile_url)

        sleep(.5)
        driver.find_element_by_css_selector('body').click()
        tags = driver.find_elements_by_class_name('fbPhotoStarGridElement')
        sleep(1)
        tags[0].click()

        sleep(1)
        print("starting iteration ")

        self.timer.tic()
        for i in range(2130):

            tager = self.get_name_of_tagger(driver)

            if not self.first_url:
                self.first_url = driver.current_url
            if tager not in self.taggees.keys():
                self.taggees[tager] = {
                    "tag_count": 1,
                    "first_tagged": "",
                    "last_tagged": ""
                }
                print("You have been tagged by {} count is at {}".format(
                    tager, len(self.taggees.keys())))
            else:
                self.taggees[tager]["tag_count"] += 1
            # print("You have been tagged by {} {}  times ".format(tager,taggees[tager]))
            driver.find_element_by_css_selector('body').send_keys(
                Keys.ARROW_RIGHT)
            sleep(self.in_between_wait)

            if self.timer.toc() > self.MAX_RUN_TIME:
                self.stop_iteration_and_display_data()

        self.stop_iteration_and_display_data()

    def stop_iteration_and_display_data(self):
        print("Process took {}s".format(self.timer.toc()))
        self.driver.quit()

        print(
            "Done Iterating through FB Photos, displaying counts now.....\n\n\n\n"
        )
        sleep(1)
        with open('output.txt', 'w') as writer:
            # Alternatively you could use
            # writer.writelines(reversed(dog_breeds))

            # Write the dog breeds to the file in reversed order

            for tager in self.taggees.keys():

                tag_message = "You have been tagged by {} , {} times \n".format(
                    tager, self.taggees[tager]["tag_count"])
                print(tag_message)
                writer.write(tag_message)
                print("The first time you were tagged by them was {}".format(
                    self.taggees[tager]["first_tagged"]))
                print("The last time you were tagged by them was {}".format(
                    self.taggees[tager]["last_tagged"]))
                print(
                    "-----------------------------------------------------------------------------"
                )
        exit()
Ejemplo n.º 24
0
def listCommand(databaseFileName: str, prefix: str, logLevel: str, sortBy: str,
                reverseSort: bool, machineReadable: bool) -> None:
    def getKey(fileInfo: FileInfo):
        if sortBy == 'perm':
            return fileInfo.stats['mode']
        if sortBy == 'blobs':
            return len(fileInfo.blobIds)
        if sortBy == 'uid':
            return fileInfo.stats['uid']
        if sortBy == 'gid':
            return fileInfo.stats['gid']
        if sortBy == 'decrypt':
            return fileInfo.decryptedSize
        if sortBy == 'encrypt':
            return fileInfo.encryptedSize
        if sortBy == 'modification':
            return fileInfo.stats['mtime']
        if sortBy == 'path':
            return fileInfo.path
        return 0

    # Set process title
    setproctitle.setproctitle('ListCommand')

    # Set logging level and get logger
    setLogingLevel(logLevel)
    logger = logging.getLogger(__name__)

    # Print parameters
    logger.info(
        'database: {}, prefix: {}, sortBy: {}, reverseSort: {}, machineReadable: {}'
        .format(databaseFileName, prefix, sortBy, reverseSort,
                machineReadable))

    # Create stats variables
    ticToc = TicToc()
    ticToc.tic()

    # Get transient database
    database = Database.getTransientCopy(databaseFileName)

    # Get absolute path
    prefix = os.path.abspath(prefix)

    # Get file infos
    fileInfos = [
        database.getFile(path) for path in database.selectPaths(prefix)
    ]

    # Close database
    database.close()

    # Sort files based on key
    fileInfos.sort(key=getKey, reverse=reverseSort)

    # Print in different format for machines
    if machineReadable:
        for fileInfo in fileInfos:
            print('{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}'.format(
                fileInfo.stats['mode'], len(fileInfo.blobIds),
                fileInfo.stats['uid'], fileInfo.stats['gid'],
                fileInfo.decryptedSize, fileInfo.encryptedSize,
                fileInfo.stats['atime'], fileInfo.stats['mtime'],
                fileInfo.path))
    else:
        # Print a header for humans
        print('{:8} {:5} {:5} {:5} {:10}  {:10}  {:26} {}'.format(
            'Perm', 'Blobs', 'uid', 'gid', 'Decrypt', 'Encrypt',
            'Modification', 'Path'))
        for fileInfo in fileInfos:
            print('{:8} {:<5} {:<5} {:<5} {:>10}  {:>10}  {:26} {}'.format(
                oct(fileInfo.stats['mode']), len(fileInfo.blobIds),
                fileInfo.stats['uid'], fileInfo.stats['gid'],
                naturalsize(fileInfo.decryptedSize),
                naturalsize(fileInfo.encryptedSize),
                datetime.fromtimestamp(fileInfo.stats['mtime']).strftime('%c'),
                fileInfo.path))

    # Print elapsed time
    logger.info('elapsed: {:.3f}s'.format(ticToc.toc()))
Ejemplo n.º 25
0
def generate_preprocessed_file():
    savingPath = get_preprocessed_file_path()
    if Path(savingPath).is_file() == False:
        timer = TicToc('preprocessing time')
        timer.tic()
        print('Generating preprocessed dataset file started ..........')
        ds_path = "../dataset/Mobile_App_Success_Milestone_2.csv"  # Training
        if ds_path.__contains__('xlsx'):
            dataset = pd.read_excel(ds_path, parse_dates=['Last Updated'])
        else:
            dataset = pd.read_csv(ds_path,
                                  parse_dates=['Last Updated'],
                                  low_memory=False)
        dataset.dropna(how='any', inplace=True)

        dataset['App_Rating'] = dataset['App_Rating'].str.replace(
            'Low_Rating', '1')
        dataset['App_Rating'] = dataset['App_Rating'].str.replace(
            'Intermediate_Rating', '2')
        dataset['App_Rating'] = dataset['App_Rating'].str.replace(
            'High_Rating', '3')
        dataset['App_Rating'] = pd.to_numeric(dataset['App_Rating'],
                                              downcast='integer',
                                              errors='coerce')
        dataset['Last Updated'] = pd.to_datetime(dataset['Last Updated'],
                                                 errors='coerce')
        most_freq_date = dataset['Last Updated'].value_counts().idxmax()
        dataset['Last Updated'] = dataset['Last Updated'].fillna(
            most_freq_date)
        dataset['Price'] = dataset['Price'].str.replace('$', '')
        dataset['Installs'] = dataset['Installs'].str.replace('+', '')
        dataset['Installs'] = dataset['Installs'].str.replace(',', '')

        dataset['Reviews'] = pd.to_numeric(dataset['Reviews'],
                                           downcast='integer',
                                           errors='coerce')
        dataset['Price'] = pd.to_numeric(dataset['Price'],
                                         downcast='float',
                                         errors='coerce')
        dataset['Installs'] = pd.to_numeric(dataset['Installs'],
                                            downcast='integer',
                                            errors='coerce')
        dataset.fillna(0)
        dataset["Size"] = dataset["Size"].str.replace(
            "Varies with device",
            str(len(dataset[dataset['Size'] == "Varies with device"])))
        dataset["Size"] = dataset["Size"].str.replace(",", "")
        dataset["Size"] = dataset["Size"].str.replace("+", "")
        dataset["Size"] = (dataset["Size"].replace(r'[kM]+$', '', regex=True).astype(float) *\
                dataset["Size"].str.extract(r'[\d\.]+([kM]+)', expand=False).fillna(1).replace(['k','M'], [10**3, 10**6]).astype(int))
        dataset.fillna(0)
        contentRatings = dataset['Content Rating'].unique()
        for Uval in contentRatings:
            meanVal = len(dataset[dataset['Content Rating'] == Uval])
            dataset['Content Rating'] = dataset['Content Rating'].str.replace(
                Uval, str(meanVal))

        Categories = dataset['Category'].unique()
        for Uval in Categories:
            repeatingTimes = len(dataset[dataset['Category'] == Uval])
            dataset['Category'] = dataset['Category'].str.replace(
                Uval, str(repeatingTimes))

#        for i in range(len(dataset)) :
#            dataset.iloc[ i , 7] = datetime.timestamp(dataset.iloc[ i , 7]) # Last Update
        dataset['Content Rating'] = pd.to_numeric(dataset['Content Rating'],
                                                  downcast='float',
                                                  errors='coerce')
        dataset['Category'] = pd.to_numeric(dataset['Category'],
                                            downcast='integer',
                                            errors='coerce')
        cols = ('App Name', 'Last Updated', 'Minimum Version',
                'Latest Version')
        dataset = Feature_Encoder(dataset, cols)
        cols = dataset.columns
        for c in cols:
            dataset[c] = dataset[c].fillna(dataset[c].value_counts().idxmax())
        dataset.to_csv(path_or_buf=savingPath, index=False)
        print('Preprocessed File Generated Successfully.......')
        timer.toc()
        print('Preprocessing Time : ' + str(round(timer.elapsed / 60, 5)) +
              ' Minutes')
        return savingPath
    else:
        return get_preprocessed_file_path()
Ejemplo n.º 26
0
                0, 2, 3, 0, 2, 0, 0, 5, 0, 4, 5, 0, 4, 0, 0, 4, 2, 0, 0, 0, 6,
                0, 0, 0, 0, 0, 0, 0
            ],
            [
                3, 0, 3, 0, 0, 5, 0, 0, 0, 0, 0, 5, 0, 4, 7, 0, 0, 0, 2, 2, 3,
                0, 0, 3, 0, 0, 0, 0
            ],
            [
                0, 0, 0, 0, 5, 0, 4, 7, 0, 0, 0, 2, 2, 3, 0, 0, 3, 0, 0, 0, 0,
                3, 0, 3, 0, 0, 5, 0
            ],
            [
                0, 0, 3, 0, 0, 0, 0, 3, 0, 3, 0, 0, 5, 0, 0, 0, 0, 0, 5, 0, 4,
                7, 0, 0, 0, 2, 2, 3
            ],
            [
                3, 3, 2, 1, 2, 2, 3, 4, 3, 2, 4, 1, 4, 2, 2, 4, 1, 4, 5, 3, 2,
                3, 1, 4, 2, 5, 2, 3
            ]]

t = TicToc('name')
# t.tic()
for tt in clues7x7:
    t.tic()
    puz = Puzzle(tt)
    print(tt.count(0))
    puz.print_city(puz.solve_puzzle())

    t.toc()  # Prints and returns the elapsed time
    print(t.elapsed)
Ejemplo n.º 27
0
class SVMLR_QP(object):
    def __init__(self,
                 nb_labels,
                 nb_instances,
                 DEBUG=False,
                 DEBUG_SOLVER=False):
        self._logger = create_logger("__SVMLR_QP", DEBUG)
        self.nb_labels = nb_labels
        self.nb_instances = nb_instances
        self._t = TicToc("__SVMLR_QP")
        self._t.set_print_toc(False)
        solvers.options["show_progress"] = DEBUG_SOLVER

    @timeit
    def get_alpha(self, A, q, v):
        """
        :return: list of alpha, size k(k-1)/2
        """
        # 1. Calculate matrix H
        # h = self.old_calculate_H(q, data)
        h_numpy = self.calculate_H(q, A)
        # np.set_printoptions(linewidth=125)
        # print(np.array(matrix(h_numpy)))
        # np.savetxt("mat_qd.txt", np.array(matrix(h_numpy)), fmt='%0.5f')

        # 2.Set the constraints for the dual problem
        e_i = int(0.5 * self.nb_labels * (self.nb_labels - 1))
        max_limit = float(v / e_i)
        size_H = int(0.5 * self.nb_labels * (self.nb_labels - 1) *
                     self.nb_instances)
        res = self.min_convex_qp(
            h_numpy,
            np.repeat(-1.0, size_H),
            np.repeat(0.0, size_H),
            np.repeat(max_limit, size_H),
            size_H,
        )

        solution = np.array([v for v in res["x"]])

        if res['status'] != 'optimal':
            self._logger.info(
                "[Solution-not-Optimal-Not-convergence] v_default (%s)", v)

        return solution

    @timeit
    def calculate_H(self, q, A):
        """
        :param A: numpy array
        :param q: list Q
        :return: Matrix H
        """
        row, col, data = [], [], []
        nb_preferences = int(self.nb_labels * (self.nb_labels - 1) * 0.5)

        self._logger.debug('Size H-matrix (%s, %s, %s)', nb_preferences,
                           self.nb_instances,
                           nb_preferences * self.nb_instances)
        for r in range(0, nb_preferences):
            for l in range(r, nb_preferences):
                self._t.tic()
                for j in range(0, self.nb_instances):
                    _j = j if r == l else 0
                    for i in range(_j, self.nb_instances):
                        list_pq = q[i][r]
                        list_ab = q[j][l]
                        # creation index (row, column)
                        i_row = self.nb_instances * r + i
                        i_col = self.nb_instances * l + j
                        cell_data = A[i, j]

                        if list_pq[0] == list_ab[0]:
                            if i_col == i_row:
                                row.append(i_row)
                                col.append(i_col)
                                data.append(cell_data)
                            else:
                                row.extend((i_row, i_col))
                                col.extend((i_col, i_row))
                                data.extend((cell_data, cell_data))

                        elif list_pq[0] == list_ab[1]:
                            if i_col == i_row:
                                row.append(i_row)
                                col.append(i_col)
                                data.append(-1 * cell_data)
                            else:
                                row.extend((i_row, i_col))
                                col.extend((i_col, i_row))
                                data.extend((-1 * cell_data, -1 * cell_data))

                        elif list_pq[1] == list_ab[0]:
                            if i_col == i_row:
                                row.append(i_row)
                                col.append(i_col)
                                data.append(-1 * cell_data)
                            else:
                                row.extend((i_row, i_col))
                                col.extend((i_col, i_row))
                                data.extend((-1 * cell_data, -1 * cell_data))

                        elif list_pq[1] == list_ab[1]:
                            if i_col == i_row:
                                row.append(i_row)
                                col.append(i_col)
                                data.append(cell_data)
                            else:
                                row.extend((i_row, i_col))
                                col.extend((i_col, i_row))
                                data.extend((cell_data, cell_data))
                self._logger.debug(
                    'Time pair-wise preference label (%s, %s, %s)',
                    'P' + str(r + 1), 'P' + str(l + 1), self._t.toc())

        size_H = int(nb_preferences * self.nb_instances)
        mat_h = spmatrix(data, row, col, size=(size_H, size_H))
        # self._logger.debug("Full matrix(mat_a)\n %s", mat_a)
        # for verification with old version
        # np.savetxt("mat_h.txt", matrix(mat_h), fmt='%0.3f')

        return mat_h

    def min_convex_qp(self, H, q, lower, upper, d):
        ell_lower = matrix(lower, (d, 1))
        ell_upper = matrix(upper, (d, 1))
        q = matrix(q, (d, 1))
        I = matrix(0.0, (d, d))
        I[::d + 1] = 1
        G = matrix([I, -I])
        h = matrix([ell_upper, -ell_lower])
        # solvers.options["refinement"] = 2
        solvers.options["kktreg"] = 1e-9
        # https://groups.google.com/forum/#!msg/cvxopt/Umcrj8UD20g/iGY4z5YgDAAJ
        return solvers.qp(P=H,
                          q=q,
                          G=G,
                          h=h,
                          kktsolver="ldl",
                          options=solvers.options)

    def plot_convergence(self):
        raise Exception("Not implemented yet")
Ejemplo n.º 28
0
class SVMLR_FrankWolfe(object):

    def __init__(self,
                 nb_labels,
                 nb_instances,
                 DEBUG=False,
                 DEBUG_SOLVER=False,
                 is_shared_H_memory=False,
                 SOLVER_LP='cvxopt',
                 startup_idx_save_disk=None,
                 process_dot_Hxt=1):
        self._logger = create_logger("__SVMLR_FrankWolfe", DEBUG)
        self.nb_labels = nb_labels
        self.nb_instances = nb_instances
        self.nb_preferences = int(self.nb_labels * (self.nb_labels - 1) * 0.5)
        self.d_size = self.nb_preferences * self.nb_instances
        self._t = TicToc("__SVMLR_FrankWolfe")
        self._t.set_print_toc(False)
        solvers.options["show_progress"] = DEBUG_SOLVER
        self._trace_convergence = []
        self.is_shared_H_memory = is_shared_H_memory
        self.DEBUG = DEBUG
        # variables to create matrix H in parallel and shared memory and disk
        self.name_matrix_H = "sparse_H_" + str(int(time.time()))
        self.in_temp_path = "/tmp/"
        self.startup_idx_save_disk = int(self.nb_preferences * 0.5 + 1) \
            if startup_idx_save_disk is None \
            else startup_idx_save_disk
        self.SOLVER_LP_DEFAULT = SOLVER_LP
        self.process_dot_Hxt = process_dot_Hxt
        if self.process_dot_Hxt > 0:
            self.pool = multiprocessing.Pool(processes=self.process_dot_Hxt)

    def get_alpha(self, A, q, v, max_iter=100, tol=1e-8):
        # 0. calculate the large matrix des
        # it is shared memory, we use the H global variable to speed to multiplication bigger matrix
        H = self.calculate_H(q, A)
        # self._logger.debug("Is it semi-definite positive matrix (%s)", is_symmetric(H))

        # 1. Set the constraints for the dual problem
        e_i = self.nb_preferences
        max_limit = float(v / e_i)

        # 2. Call wrapper linear programing solver
        lp_programing = self.__wrapper_lp_solvers(0, max_limit, solver=self.SOLVER_LP_DEFAULT)

        # 3. Frank-Wolf algorithm
        x_t = np.zeros(self.d_size)  # init value for algorithm frank-wolfe
        c = np.repeat(-1.0, self.d_size)
        g_t, it = 0, 0

        for it in range(max_iter):
            # Step 0: compute gradient of the sparse matrix
            grad_fx = self.compute_H_dot_x_grad(x_t, H, c)

            # Step 1: direction-finding sub-problem
            s_t = lp_programing(grad_fx)
            d_t = s_t - x_t
            g_t = -1 * (grad_fx.dot(d_t))
            # verify if gap is below tolerance
            if g_t <= tol:
                break
            # Step 2: set step size by line search
            Hd_t = self.compute_H_dot_x_grad(d_t, H)
            z_t = d_t.dot(Hd_t)
            step_size = min(-1 * (c.dot(d_t) + x_t.dot(Hd_t)) / z_t, 1.)
            # Step 3: update current value
            x_t = x_t + step_size * d_t
            if self.DEBUG:
                self._trace_convergence.append(g_t)
                self._logger.debug("Gradient-cost-iteration (it, grad) (%s, %s)", it, g_t)

        self._logger.debug("Cost-Fx-gradient and #iters (grad_fx, iters, is_optimal) (%s, %s, %s)",
                           g_t, it, it + 1 < max_iter)
        self._logger.debug("Vector solution alphas (%s)", x_t)
        return x_t

    # async def dot_xt_Hr_preference(self, x_t, H):
    #     async def one_iteration(r):
    #         return H[r] @ x_t + H[r].T @ x_t
    #
    #     coros_or_futures = [one_iteration(r) for r in range(0, self.startup_idx_save_disk - 1)]
    #     res = await asyncio.gather(*coros_or_futures)
    #     return np.sum(res, axis=0)

    def compute_H_dot_x_grad(self, x_t, H, add_vec=None):
        # Gradient evaluate in current value x_t
        grad_fx = np.zeros(self.d_size)
        if self.is_shared_H_memory:  # multiprocessing inner product space

            def dot_xt_Hr_preference(H, x_t, r):
                self._logger.debug("Dot-inner-product preference (H_%s @ x_t)", r)
                return H @ x_t + H.T @ x_t

            __thread_dot = [None] * (self.startup_idx_save_disk - 1)
            for i in range(self.startup_idx_save_disk - 1):
                __thread_dot[i] = ThreadWithReturnValue(target=dot_xt_Hr_preference, args=(H[i], x_t, i,))
                __thread_dot[i].start()

            if self.process_dot_Hxt > 1:

                # (1) asynchronous at testing
                # import asyncio
                # loop = asyncio.new_event_loop()
                # inner_product = loop.run_until_complete(self.dot_xt_Hr_preference(x_t, H))
                # grad_fx = grad_fx + inner_product
                # loop.close()

                # (2) multiprocessing dot calculation
                # It's not possible because it does not share memory very well (until python-3.8)
                # fnc_target = partial(dot_xt_Hr_preference, x_t)
                # res = self.pool.map(fnc_target, range(0, self.startup_idx_save_disk - 1))
                # for x_memory in res:
                #     grad_fx = grad_fx + x_memory

                func_target = partial(dot_xt_Hr_from_disk_hard, x_t, self.name_matrix_H, self.in_temp_path)
                res = self.pool.map(func_target, range(self.startup_idx_save_disk - 1, self.nb_preferences))
                for x_r in res:
                    grad_fx = grad_fx + x_r

            else:  # singleton processing
                # for r in range(0, self.startup_idx_save_disk - 1):
                #     grad_fx = grad_fx + H[r] @ x_t + H[r].T @ x_t

                for r in range(self.startup_idx_save_disk - 1, self.nb_preferences):
                    H_disk = load_npz(self.in_temp_path + self.name_matrix_H + "_" + str(r + 1) + ".npz")
                    x_disk = H_disk @ x_t + H_disk.T @ x_t
                    grad_fx = grad_fx + x_disk

            for _dot in __thread_dot:
                grad_fx = grad_fx + _dot.join()
        else:
            grad_fx = H @ x_t + H.T @ x_t

        if add_vec is not None:
            grad_fx = grad_fx + add_vec

        return grad_fx

    def calculate_H(self, q, A):
        if self.is_shared_H_memory:
            return sparse_matrix_H_shared_memory_and_disk(q, A,
                                                          self.nb_preferences,
                                                          self.nb_instances,
                                                          self.name_matrix_H,
                                                          self.startup_idx_save_disk,
                                                          self.in_temp_path)
        else:
            return self.all_sparse_symmetric_H(q, A)

    def all_sparse_symmetric_H(self, q, A):
        self._logger.debug('Size H-matrix (nb_preference, nb_instances, d_size) (%s, %s, %s)',
                           self.nb_preferences, self.nb_instances, self.nb_preferences * self.nb_instances)

        data_coo = None
        for r in range(0, self.nb_preferences):
            rows, cols, data = array.array('i'), array.array('i'), array.array('d')

            def append(i, j, d):
                rows.append(i)
                cols.append(j)
                data.append(d)

            for l in range(r, self.nb_preferences):
                self._t.tic()
                for i in range(0, self.nb_instances):
                    _i = i if r == l else 0
                    for j in range(_i, self.nb_instances):
                        list_pq = q[i][r]
                        list_ab = q[j][l]
                        # creation index (row, column)
                        i_row = self.nb_instances * r + i
                        i_col = self.nb_instances * l + j
                        cell_data = A[i, j]
                        # put half value to diagonal matrix to use H + H.T
                        if i_row == i_col and r == l:
                            cell_data = 0.5 * cell_data

                        if list_pq[0] == list_ab[0]:
                            append(i_row, i_col, cell_data)

                        elif list_pq[0] == list_ab[1]:
                            append(i_row, i_col, -1 * cell_data)

                        elif list_pq[1] == list_ab[0]:
                            append(i_row, i_col, -1 * cell_data)

                        elif list_pq[1] == list_ab[1]:
                            append(i_row, i_col, cell_data)

                self._logger.debug('Time pair-wise preference label (%s, %s, %s)',
                                   'P' + str(r + 1), 'P' + str(l + 1), self._t.toc())
            if data_coo is not None:
                data.extend(data_coo.data)
                rows.extend(data_coo.row)
                cols.extend(data_coo.col)
            rows = np.frombuffer(rows, dtype=np.int32)
            cols = np.frombuffer(cols, dtype=np.int32)
            data = np.frombuffer(data, dtype='d')
            data_coo = coo_matrix((data, (rows, cols)), shape=(self.d_size, self.d_size))

        return data_coo.tocsr()

    def __wrapper_lp_solvers(self, lower_bound, upper_bound, solver='cvxopt'):
        self._logger.debug("Linear solver selected (%s)", solver)
        if solver == 'cvxopt':
            def __executing(grad_fx):
                res = solvers.lp(matrix(grad_fx, (self.d_size, 1)), G=G, h=h)
                if res['status'] != 'optimal':
                    self._logger.info("[Solution-not-Optimal-Not-convergence] v_default (%s)", v)
                return np.array([v for v in res["x"]])

            # 1. Create bound constraint for linear programming
            x_bound_upper = spmatrix(1.0, range(self.d_size), range(self.d_size))
            x_bound_lower = spmatrix(-1.0, range(self.d_size), range(self.d_size))
            G = sparse([x_bound_upper, x_bound_lower])
            h = matrix(np.hstack([np.repeat(upper_bound, self.d_size), -np.zeros(self.d_size)]))
            return __executing
        elif solver == 'scipy':
            def __executing(grad_fx):
                res = linprog(grad_fx, bounds=(lower_bound, upper_bound))
                if res['status'] != 0:
                    self._logger.info("[Solution-not-Optimal-Not-convergence] v_default (%s)", v)
                return np.array([v for v in res["x"]])

            return __executing
        elif solver == 'salmuz':
            def __lp_with_box_constraint(c):
                lp_solution_optimal = np.zeros(c.shape)
                idx_negative_value = np.where(c < 0)[0]
                if len(idx_negative_value) == 0:
                    return lp_solution_optimal
                lp_solution_optimal[idx_negative_value] = upper_bound
                return lp_solution_optimal

            return __lp_with_box_constraint
        else:
            raise Exception('Solver has not implemented yet')

    def plot_convergence(self):
        plt.plot(self._trace_convergence, lw=1)
        plt.yscale('log')
        plt.xlabel('Number of iterations')
        plt.ylabel('Relative Frank-Wolf gap')
        plt.title('Convergence QP')
        plt.grid()
        plt.show()

    def __del__(self):
        # remove temporal files where it save the sparse matrix
        if self.is_shared_H_memory:
            for r in range(self.startup_idx_save_disk - 1, self.nb_preferences):
                os.remove(self.in_temp_path + self.name_matrix_H + "_" + str(r + 1) + ".npz")
        # release pool process after computations
        if self.pool is not None:
            self.pool.close()
Ejemplo n.º 29
0
p_map.xp2s = model.xp2s_y_xdot

s_grid_height = np.linspace(0.5, 1.5, 7)
s_grid_velocity = np.linspace(3, 8, 7)
s_grid = (s_grid_height, s_grid_velocity)
a_grid_aoa = np.linspace(00/180*np.pi, 70/180*np.pi, 21)
# a_grid = (a_grid_aoa, )
a_grid_amp = np.linspace(0.9, 1.2, 11)
a_grid = (a_grid_aoa, a_grid_amp)

grids = {'states': s_grid, 'actions': a_grid}
t = TicToc()
t.tic()
Q_map, Q_F, Q_reach = vibly.parcompute_Q_map(grids, p_map, keep_coords=True,
                                          verbose=2)
t.toc()
print("time elapsed: " + str(t.elapsed/60))
Q_V, S_V = vibly.compute_QV(Q_map, grids)
S_M = vibly.project_Q2S(Q_V, grids, proj_opt=np.mean)
Q_M = vibly.map_S2Q(Q_map, S_M, s_grid, Q_V=Q_V)
# plt.scatter(Q_map[1], Q_map[0])
print("non-failing portion of Q: " + str(np.sum(~Q_F)/Q_F.size))
print("viable portion of Q: " + str(np.sum(Q_V)/Q_V.size))

import itertools as it
# Q0 = np.zeros((len(grids['states']), total_gridpoints))
# def create_x0(grids):
#     for idx, state_action in enumerate(np.array(list(
#             it.product(*grids['states'], *grids['actions'])))):

Ejemplo n.º 30
0
        if spelling_report_name == "":
            file_name = file_name.replace(".txt", "")
            # the new file have the default name of the original file + spell_checked
            file = open(file_name + " spelling_report.txt", "w")
        else:
            file = open(spelling_report_name + ".txt", "w")
        # the parameter is the option variable, f stend for spell check file
        spell_check_report = spell_check_result("f")
        file.close()  # closing the file

    elif option == "s":
        print_lines = [" ", " Please enter the sentence, then press [Enter]"]
        format(print_lines, False, "  E N T E R   S E N T E N C E")
        user_sentence = input("\u2517" + "\u2501" * 5 +
                              " Sentence: ")  # ask user to input a snce
        spell_check_statistics, new_user_sentence = checking_spelling(
            user_sentence)
        # the parameter is the option variable, s stand for spell check sentence
        spell_check_report = spell_check_result("s")

    time_recorded.toc()  # end timing
    # add the time elapsed to the spelling report
    print_lines = spell_check_report + [
        " " + str(time_recorded.elapsed)[:6] + "... seconds used", " "
    ]
    format(print_lines, False, "  S P E L L I N G   R E P O R T"
           )  # the function will print out the spelling report
    continue_check_spelling = bool("" == input(
        "\u2517" + "\u2501" * 5 +
        " Please press Enter to continue or press any other key to exit "))