# Adapted from: 
# http://fiji.sc/TrakEM2_Scripting#Concatenating_multiple_project_XML_files_by_copying_all_their_layers

from ini.trakem2 import Project
from ini.trakem2.display import Patch
from ini.trakem2.utils import Utils

# Wafer
bucket = '/mnt/bucket/labs/seung/research/'
# project_folder = bucket + 'tommy/150528_zfish/'
# project_folder = bucket + 'tommy/150502_piriform/'
project_folder = bucket + 'tommy/trakem_test/150622_fix_rigid'

# Get the first open project
project = Project.getProject('turtle_rigid.xml')

# Get layerset
layerset = project.getRootLayerSet()

start = 0
finish = 2

layers = layerset.getLayers()[start:finish]

# Regenerate all image mipmaps
futures = []
for layer in layers:
	for patch in layer.getDisplayables(Patch):
		futures.append(patch.updateMipMaps())
Utils.wait(futures)
from java.util.concurrent import Executors, TimeUnit

SPRING_LENGTH = 100
spring_triangle_height_twice = 2 * Math.sqrt(0.75*SPRING_LENGTH*SPRING_LENGTH)
LAYER_SCALE = 1.0
STIFFNESS = 0.1
MAX_STRETCH = 2000.0
DAMP = 0.9
MAX_ITERATIONS = 5000 #1000
MAX_PLATEAU_WIDTH = 200
MAX_EPSILON = 6
MIN_NUM_MATCHES = 1 # minimum for TranslationModel2D()
MAX_NUM_THREADS = 40

# project = Project.getProject('stack_import.xml')
project = Project.getProject('montage_align.xml')

bucket = "/usr/people/tmacrina/seungmount/research/"
# project_folder = bucket + "tommy/150502_piriform/"
project_folder = bucket + "tommy/trakem_tests/150709_elastic_montage/"
input_folder = project_folder + "affine_block_matching/points/"
# input_folder = project_folder + "affine_block_matching/layers/"

all_files = os.listdir(input_folder)

def get_tiles(layer):
	po = ParamOptimize()
	po.maxEpsilon = 25.0
	po.minInlierRatio = 0.0
	po.minNumInliers = 12
	po.expectedModelIndex = 1
from ini.trakem2.imaging.filters import CLAHE
from mpicbg.trakem2.align import AlignmentUtils
import os
import re
import math
import csv
from java.awt.geom import AffineTransform
 

wafer = "S2-W003-W008"
# bucket = "/usr/people/tmacrina/seungmount/research/"
bucket = "/mnt/data0/"
# writefile = bucket + "tommy/150528_zfish/" + wafer + "_import.txt"
project_folder = bucket + "tommy/150502_piriform/S2-W001/"

project = Project.getProject("150605_S2-W001_elastic_S2-W002_affine.xml")
loader = project.getLoader()
# loader.setMipMapsRegeneration(False) # disable mipmaps
layerset = project.getRootLayerSet()



layers = layerset.getLayers()
starting_index = len(layers) + 1

task = loader.importImages(
          layerset.getLayers().get(0),  # the first layer
          project_folder + wafer + "_import.txt", # the absolute file path to the text file with absolute image file paths
          "\t", # the column separator  <path> <x> <y> <section index>
          1.0, # section thickness, defaults to 1
          1.0, # calibration, defaults to 1