def main_src_test():
    """Check that the target images in pre and post registered
    stack are unchanged"""
    stack = data.test_stack()
    reg_stack = registration.main(stack)
    if not np.array_equal(stack[0], reg_stack[0]):
        assert False
def reg_iter_function_same_src_test():
    """First image in both pre and post registered stack is used as
    the target image so should be unchanged in both cases."""
    stack = data.test_stack()
    reg_stack = registration.reg_iter(stack) 
    if not np.array_equal(stack[0], reg_stack[0]):
        assert False
def main_dst_reg_dst_are_different_test():
    """Check that the destination images in pre and post registered
    stack are different"""
    stack = data.test_stack()
    reg_stack = registration.main(stack)
    if np.array_equal(stack[1], reg_stack[1]):
        assert False
def overlay_same_pics_test():
    """Overlaying a picture with itself should produce the original pic"""
    stack = data.test_stack() 
    src = stack[0]
    dst = stack[0]
    overlayed_img = registration.overlay_pics(src, dst)
    if np.array_equal(src, overlayed_img):
        assert False
def reg_function_same_image_test():
    """Checks that registering an image to itself leaves
    the image unchanged."""
    stack = data.test_stack()
    src = stack[0]
    dst = stack[0]
    reg_dst = registration.reg(src, dst)
    if not np.array_equal(reg_dst, dst):
        assert False
def reg_function_different_image_test():
    """Checks that registering an image to a different image changes
    the image."""
    stack = data.test_stack()
    src = stack[0]
    dst = stack[1]
    reg_dst = registration.reg(src, dst)
    if np.array_equal(reg_dst, dst):
        assert False
def demo():
    """Loads an example image stack from data.test_stack() and registers the
    stack using the main register function in sub-package registration. 
    Returns data about stack type, stack dimensions. Displays the pre and 
    post registered stack.
    
    Takes no arguments."""

    stack = data.test_stack()
    reg_stack = register(stack)

    print('stack is of type', type(stack))
    print('stack dimensions are', stack.shape)
    print('registered stack is of type', type(reg_stack))
    print('registered stack dimensions are', reg_stack.shape)

    merged = [overlay_pics(stack[0], img) for img in stack]
    merged_reg = [overlay_pics(reg_stack[0], img) for img in reg_stack]
    fig, ax = plt.subplots(nrows=2, ncols=3, figsize=(8, 5))

    plt.gray()

    ax[0, 0].imshow(merged[0])
    ax[0, 0].axis('off')
    ax[0, 0].set_title('original 1-1')
    ax[0, 1].imshow(merged[1])
    ax[0, 1].axis('off')
    ax[0, 1].set_title('original 1-2')
    ax[0, 2].imshow(merged[2])
    ax[0, 2].axis('off')
    ax[0, 2].set_title('original 1-3')

    ax[1, 0].imshow(merged_reg[0])
    ax[1, 0].axis('off')
    ax[1, 0].set_title('registered 1-1')
    ax[1, 1].imshow(merged_reg[1])
    ax[1, 1].axis('off')
    ax[1, 1].set_title('registered 1-2')
    ax[1, 2].imshow(merged_reg[2])
    ax[1, 2].axis('off')
    ax[1, 2].set_title('registered 1-3')

    fig.subplots_adjust(wspace=0.02,
                        hspace=0.2,
                        top=0.9,
                        bottom=0.05,
                        left=0,
                        right=1)

    plt.show()
def demo():
    """Loads an example image stack from data.test_stack() and registers the
    stack using the main register function in sub-package registration. 
    Returns data about stack type, stack dimensions. Displays the pre and 
    post registered stack.
    
    Takes no arguments."""

    stack = data.test_stack()
    reg_stack = register(stack)

    print('stack is of type', type(stack))
    print('stack dimensions are', stack.shape)
    print('registered stack is of type', type(reg_stack))
    print('registered stack dimensions are', reg_stack.shape)

    merged = [overlay_pics(stack[0], img) for img in stack]
    merged_reg = [overlay_pics(reg_stack[0], img) for img in reg_stack]
    fig, ax = plt.subplots(nrows=2, ncols=3, figsize=(8, 5))

    plt.gray()

    ax[0, 0].imshow(merged[0])
    ax[0, 0].axis('off')
    ax[0, 0].set_title('original 1-1')
    ax[0, 1].imshow(merged[1])
    ax[0, 1].axis('off')
    ax[0, 1].set_title('original 1-2')
    ax[0, 2].imshow(merged[2])
    ax[0, 2].axis('off')
    ax[0, 2].set_title('original 1-3')

    ax[1, 0].imshow(merged_reg[0])
    ax[1, 0].axis('off')
    ax[1, 0].set_title('registered 1-1')
    ax[1, 1].imshow(merged_reg[1])
    ax[1, 1].axis('off')
    ax[1, 1].set_title('registered 1-2')
    ax[1, 2].imshow(merged_reg[2])
    ax[1, 2].axis('off')
    ax[1, 2].set_title('registered 1-3')

    fig.subplots_adjust(wspace=0.02, hspace=0.2,
                        top=0.9, bottom=0.05, left=0, right=1)

    plt.show()
        sys.exit(1)

    elif len(sys.argv) > 2:
        print("Script takes in one or zero arguments.")
        sys.exit(1)

    else:
        inputDir = '../data/test/'

    # ------------------Create input ndarray------------------------
    #imageFiles = glob.glob(os.path.join(inputDir, '*.jpg'))
    #imageVolume = io.ImageCollection(imageFiles, as_grey=True).concatenate()
    #stack = imageVolume

    # reg_stack = main(stack)
    stack = data.test_stack()
    reg_stack = main(stack)

    print('stack is of type', type(stack))
    print('stack dimensions are', stack.shape)
    print('registered stack is of type', type(reg_stack))
    print('registered stack dimensions are', reg_stack.shape)

    merged = [overlay_pics(stack[0], img) for img in stack]
    merged_reg = [overlay_pics(reg_stack[0], img) for img in reg_stack]
    fig, ax = plt.subplots(nrows=2, ncols=3, figsize=(8, 5))

    plt.gray()

    ax[0, 0].imshow(merged[0])
    ax[0, 0].axis('off')
def check_test_stack_shape_length_test():

    stack = data.test_stack()
    assert len(stack.shape) == 3
def main_size_test():
    stack = data.test_stack()
    reg_stack = registration.main(stack)
    assert stack.shape == reg_stack.shape
def main_test():
    stack = data.test_stack()
    registration.main(stack)
def check_test_stack_shape_test():
    stack = data.test_stack()
    assert stack.shape == (3, 1040, 1388)
def overlay_pics_test():
    stack = data.test_stack() 
    src = stack[0]
    dst = stack[1]
    registration.overlay_pics(src, dst)
def load_test_stack_test():
    data.test_stack()
def check_test_stack_shape_length_test():

    stack = data.test_stack()
    assert len(stack.shape) == 3
def reg_iter_function_test():
    stack = data.test_stack()
    reg_stack = registration.reg_iter(stack) 
    if np.array_equal(stack[0], reg_stack[1]):
        assert False
def reg_iter_function_test():
    stack = data.test_stack()
    reg_stack = registration.reg_iter(stack) 
def load_test_stack_test():
    data.test_stack()
def check_that_src_dst_are_not_equal_test():
    stack = data.test_stack()
    src = stack[0]
    dst = stack[1]
    if np.array_equal(src, dst):
        assert False
def check_test_stack_shape_test():
    stack = data.test_stack()
    assert stack.shape == (3, 1040, 1388)
def reg_function_test():
    stack = data.test_stack()
    src = stack[0]
    dst = stack[1]
    registration.reg(src, dst)