Example #1
0
 def __init__(self, frame_name, flipped=False):
     self._none_transition = self.__class__
     super(OneFrameLoopedAnimation, self).__init__()
     frame = util.load_frame(util.find_datadir(), frame_name)
     if flipped:
         frame = util.flip_frame(frame)
     self.frame = frame
Example #2
0
def floaty_sheep(datadir, clock):
    '''Make an inert sheep unaffected by gravity'''
    sheep_frame = util.load_frame(datadir, 'sheep')
    sheep = components.entity('Sheep', clock, location=(500, 400),
                              motion=components.motion(),
                              graphics=components.graphics(None),
                              hitpoints=2)
    sheep.set_frame(sheep_frame)
    components.physics(sheep)
    sheep.physics.add(physics.apply_friction(0.5), components.physics.GROUP_VELOCITY)
    return sheep
Example #3
0
def drake(datadir, clock):
    '''Make an inert drake'''
    drake_frame = util.load_frame(datadir, 'drake')
    drake = components.entity('Drake', clock, location=(500, 0),
                              motion=components.motion(),
                              graphics=components.graphics(None),
                              hitpoints=200)
    drake.set_frame(drake_frame)
    physics.regular_physics(drake)
    drake.physics.add(physics.apply_friction(5), components.physics.GROUP_VELOCITY)
    return drake
if __name__ == "__main__":
    parser = argparse.ArgumentParser(prog='export_events.py')
    parser.add_argument("--overwrite", action='store_true')
    parser.add_argument("datapath")
    parser.add_argument("pid")
    args = parser.parse_args()
    logging.getLogger().setLevel(logging.INFO)
    logging.info("dumping {}".format(args.pid))

    if not args.overwrite and os.path.exists("{}/solution_{}/foldit_user_events_{}.csv".format(args.datapath, args.pid, args.pid)):
        logging.info("{}/solution_{}/foldit_user_events_{}.csv already exists".format(args.datapath, args.pid, args.pid))
        sys.exit(1)

    logging.info("loading data")
    data, bts, puz = load_frame("{}/solution_{}/{}_meta.h5".format(args.datapath, args.pid, args.pid))

    soln_lookup = {}
    parent_lookup = {}
    child_lookup = {}
    make_lookups(data, soln_lookup, parent_lookup, child_lookup)

    descendants_memo = {}

    def get_descendants(s):
        sid = s.sid
        if sid in descendants_memo:
            return descendants_memo[sid]
        # soln_lookup is generated from the list of solutions passed in which are all from a single user
        # the history may include evolver children, which we have to avoid trying to look up
        children = [soln_lookup[c] for c in child_lookup[sid] if c in soln_lookup] if sid in child_lookup else []
Example #5
0
    parser.add_argument("--overwrite", action="store_true")
    args = parser.parse_args()
    pid = args.pid

    sys.setrecursionlimit(10000)

    if os.path.exists(
            "data/puzzle_solutions/solution_{}/{}_times.pickle".format(
                pid, pid)) and not args.overwrite:
        print(
            "data/puzzle_solutions/solution_{}/{}_times.pickle".format(
                pid, pid), "already exists")
        sys.exit(0)

    print("loading frame for", pid)
    df, bts, puz = load_frame(
        "data/puzzle_solutions/solution_{}/{}_meta.h5".format(pid, pid))

    print("assembling solutions")
    infos = df.apply(lambda r: sorted(
        ([p for l in r.lines for p in l.pdb_infos]
         if r.lines else []) + ([p for l in r.evol_lines for p in l.pdb_infos]
                                if r.evol_lines else []),
        key=lambda p: p.timestamp),
                     axis=1)
    soln_lookup = {}
    parent_lookup = {}
    for _, xs in infos.items():
        for x in xs:
            soln_lookup[x.sid] = x
            if x.parent_sid:
                parent_lookup[x.sid] = x.parent_sid