# Path: blockplayer/config.py
# def load(dir_path):
# def save(dir_path):
# LH = 0.0192
# LW = 0.016
# GRIDRAD = 18
# 
# Path: blockplayer/dataset.py
# def advance(skip=1):
# def setup_opencl():
# def load_dataset(pathname):
# def load_gt():
# def load_random_dataset():
# def download():
# 
# Path: blockplayer/grid.py
# def initialize():
# def gt2grid(gtstr, chars='*rR'):
# def grid2gt(occ):
# def initialize_with_groundtruth(GT):
# def window_correction(occA, vacA, occB, vacB):
#     def error(t):
# def xcorr_correction(A, B):
#     def convolve(p1, p2):
#     def best(cc):
# def show_votegrid(vg, color=(1,0,0), opacity=1):
# def has_previous_estimate():
# def apply_correction(grid, bx,bz,rot):
# def center(R_aligned, occ_new, vac_new):
# def nearest(R_previous, R_aligned):
# def align_with_previous(R_aligned, occ_new, vac_new):
# def stencil_carve(depth, rect, R_correct, occ, vac, rgb=None):
# def merge_with_previous(occ_, vac_, occ_stencil, vac_stencil, color_=None):
# def update_previous_estimate(R_correct):
#     B = apply_correction(B, x, z, r)
#     B = apply_correction(B, bx, bz, br)
#     X,Y,Z = np.array(gridmax)-gridmin
#     M = [expmap.axis2rot(np.array([0,-i*np.pi/2,0])) for i in range(4)]
# 
# Path: blockplayer/hashalign.py
# def features_weave(Ar):
# def find_features(A):
# def diff_coord(a, b, ashape):
# def apply_correction(grid, bx, by, bz,rot):
# def match_features(A, B, sq):
# def correction2modelmat(R_aligned, x, y, z, r):
# def find_best_alignment(occA, vacA, occB, vacB,
#                         R_aligned=None, prev_R_Correct=None):
#     def error(occA, vacA, occB, vacB):
#     def error_weave(occA, vacA, occB, vacB, bx, bz, term):
#     WX, WY, WZ = Ar.shape
#     R = expmap.axis2rot(np.array([0,-r*np.pi/2,0]))
#     A,B = occA, occB
#             R = correction2modelmat(R_aligned, 0, 0, 0, r)


import os
import shutil
import numpy as np
import django.conf
import time
import re
import simplejson as json
import glob
import cPickle as pickle
from django import template
from blockplayer import config
from blockplayer import dataset
from blockplayer import grid
from blockplayer import hashalign
            'video-js.css','default.jpg','blocksetup.js'):
        shutil.copy('makewww/' + name, out_path)

    with open('makewww/blockviewiframetemplate.html','r') as f:
        tmp = template.Template(f.read())

    datasets = glob.glob('data/sets/study*')
    datasets.sort()
    total = len(datasets)
    for x,name in enumerate(datasets):
        dataset.load_dataset(name)
        name = os.path.split(name)[1]
        
        # Open the ground truth file
        custom = os.path.join('data/sets/', name, 'gt.txt')
        if os.path.exists(custom):
            # Try dataset directory first
            fname = custom
        else:
            # Fall back on generic ground truth file
            match = re.match('.*_z(\d)m_.*', name)
            if match is None:
                continue
            
            number = int(match.groups()[0])
            fname = 'data/experiments/gt/gt%d.txt' % number
        
        # Load the ground truth file
        removed = None
        added = None

# Path: blockplayer/config.py
# def load(dir_path):
# def save(dir_path):
# LH = 0.0192
# LW = 0.016
# GRIDRAD = 18
# 
# Path: blockplayer/dataset.py
# def advance(skip=1):
# def setup_opencl():
# def load_dataset(pathname):
# def load_gt():
# def load_random_dataset():
# def download():
# 
# Path: blockplayer/grid.py
# def initialize():
# def gt2grid(gtstr, chars='*rR'):
# def grid2gt(occ):
# def initialize_with_groundtruth(GT):
# def window_correction(occA, vacA, occB, vacB):
#     def error(t):
# def xcorr_correction(A, B):
#     def convolve(p1, p2):
#     def best(cc):
# def show_votegrid(vg, color=(1,0,0), opacity=1):
# def has_previous_estimate():
# def apply_correction(grid, bx,bz,rot):
# def center(R_aligned, occ_new, vac_new):
# def nearest(R_previous, R_aligned):
# def align_with_previous(R_aligned, occ_new, vac_new):
# def stencil_carve(depth, rect, R_correct, occ, vac, rgb=None):
# def merge_with_previous(occ_, vac_, occ_stencil, vac_stencil, color_=None):
# def update_previous_estimate(R_correct):
#     B = apply_correction(B, x, z, r)
#     B = apply_correction(B, bx, bz, br)
#     X,Y,Z = np.array(gridmax)-gridmin
#     M = [expmap.axis2rot(np.array([0,-i*np.pi/2,0])) for i in range(4)]
# 
# Path: blockplayer/hashalign.py
# def features_weave(Ar):
# def find_features(A):
# def diff_coord(a, b, ashape):
# def apply_correction(grid, bx, by, bz,rot):
# def match_features(A, B, sq):
# def correction2modelmat(R_aligned, x, y, z, r):
# def find_best_alignment(occA, vacA, occB, vacB,
#                         R_aligned=None, prev_R_Correct=None):
#     def error(occA, vacA, occB, vacB):
#     def error_weave(occA, vacA, occB, vacB, bx, bz, term):
#     WX, WY, WZ = Ar.shape
#     R = expmap.axis2rot(np.array([0,-r*np.pi/2,0]))
#     A,B = occA, occB
#             R = correction2modelmat(R_aligned, 0, 0, 0, r)


# Path: makewww/make_grid.py
import os
import shutil
import numpy as np
import django.conf
import time
import re
import simplejson as json
import glob
import cPickle as pickle
from django import template
from blockplayer import config
from blockplayer import dataset
from blockplayer import grid
from blockplayer import hashalign

            'video-js.css','default.jpg','blocksetup.js'):
        shutil.copy('makewww/' + name, out_path)

    with open('makewww/blockviewiframetemplate.html','r') as f:
        tmp = template.Template(f.read())

    datasets = glob.glob('data/sets/study*')
    datasets.sort()
    total = len(datasets)
    for x,name in enumerate(datasets):
        dataset.load_dataset(name)
        name = os.path.split(name)[1]
        
        # Open the ground truth file
        custom = os.path.join('data/sets/', name, 'gt.txt')
        if os.path.exists(custom):
            # Try dataset directory first
            fname = custom
        else:
            # Fall back on generic ground truth file
            match = re.match('.*_z(\d)m_.*', name)
            if match is None:
                continue
            
            number = int(match.groups()[0])
            fname = 'data/experiments/gt/gt%d.txt' % number
        
        # Load the ground truth file
        removed = None
        added = None

        with open(fname) as fp: