#!/usr/bin/env python

import glob
import os
import re
import sys
import shutil

from efidir.config import *
from efidir.sws import *
from efidir.utils import *

master_image = 10-1 # 5eme image -1 pour l'indice 
nbr_imagette = 6

#nom_images = [ "P1020343.JPG", "P1020348.JPG", "P1020353.JPG", "P1020358.JPG", #"P1020363.JPG", "P1020368.JPG", "P1020373.JPG", "P1020378.JPG" ,"P1020383.JPG",#"P1020387.JPG", "P1020393.JPG", "P1020398.JPG" ,"P1020403.JPG", "P1020409.JPG",#"P1020413.JPG"]

#nbr_images = len(nom_images)

nom_images = [ "P1000077.JPG", "P1000082.JPG", "P1000087.JPG", "P1000092.JPG", "P1000097.JPG", "P1000102.JPG", "P1000107.JPG", "P1000112.JPG", "P1000117.JPG", "P1000122.JPG", "P1000127.JPG", "P1000132.JPG", "P1000137.JPG", "P1000142.JPG", "P1000147.JPG", "P1000152.JPG", "P1000157.JPG", "P1000162.JPG", "P1000167.JPG", "P1000172.JPG"]

nbr_images = len(nom_images)
# Target list to be built
targets = []

# 1. Resize image
 
for n in nom_images:
        outputs = [
		"resized75/"+n]
	inputs = [n]
	commands = [
		"convert "
		        +" "+ inputs[0]
                        +"  -verbose"
                        +"  -resize 75%"
                        +"  -quality 100%"
                        +"  -comment \"proud made with linux\""
                        +" "+ outputs[0]
		]
        targets.append(target_create(commands, inputs, outputs))

# 2. Convert image JPG to gris image

for n in nom_images: 
	outputs = [
		"grey/"+n+".png" ]
	inputs = ["resized75/"+n]
	commands = [
		"convert "
		        +" "+  inputs[0]
                        +"  -verbose"
                        +"  -colorspace Gray"
                        +"  -comment \"proud made with linux\""
                        +" "+  outputs[0]
		]
        targets.append(target_create(commands, inputs, outputs))

# 3. Convert datatype in float

for n in nom_images: 
	outputs = ["float/"+n+".png.float",
                   "float/"+n+".png.float.hdr"]
	
 	inputs = ["grey/"+n+".png"]
 		
 	
 	commands = [
 		EFIDIR_PREFIX+"/bin/convert_datatype "
                        +"  --input "+inputs[0]		 
		        +"  --output "+outputs[0]		
		        +"  --output_datatype 4 "	 
	
		]
	targets.append(target_create(commands, inputs, outputs))
#row=[544, 676, 1222, 1242, 1254]
#column=[748, 2448, 142, 1024, 2272]
#nb_rows=[139, 379, 331, 319, 215]
#nb_columns=[241, 311, 505, 579, 225]
row=[387, 480, 828, 1305, 1422, 1539]
column=[132, 1179, 2346, 80, 828, 1500]
nb_rows=[285, 379, 515, 219, 241, 191]
nb_columns=[571, 531, 381, 493, 481, 255]
# 4.1. Crop imagette 1

for n in nom_images: 
	
       outputs = ["crop1/"+n+".png.float.crop",
                   "crop1/"+n+".png.float.crop.hdr"]
	
       inputs = ["float/"+n+".png.float",
                  "float/"+n+".png.float.hdr"]
 		
 	
       commands = [
  		EFIDIR_PREFIX+"/bin/crop "
                          +"  --input "+inputs[0]	 
		          +"  --output "+outputs[0]	
                          +"  --row "+str(row[0])
                          +"  --column "+str(column[0]) 
                          +"  --nb_rows "+str(nb_rows[0])
                          +"  --nb_columns "+str(nb_columns[0])
		]
       targets.append(target_create(commands, inputs, outputs))


# 4.2. Crop imagette 2

for n in nom_images: 
	
       outputs = ["crop2/"+n+".png.float.crop",
                  "crop2/"+n+".png.float.crop.hdr"]
	
       inputs = ["float/"+n+".png.float",
                  "float/"+n+".png.float.hdr"]
 		
 	
       commands = [
  		EFIDIR_PREFIX+"/bin/crop " 
                          +"  --input "+inputs[0]	 
		          +"  --output "+outputs[0]	
                          +"  --row "+str(row[1])
                          +"  --column "+str(column[1])
                          +"  --nb_rows "+str(nb_rows[1])
                          +"  --nb_columns "+str(nb_columns[1])	

		]
       targets.append(target_create(commands, inputs, outputs))

# 4.3. Crop imagette 3

for n in nom_images: 
	
       outputs = ["crop3/"+n+".png.float.crop",
                  "crop3/"+n+".png.float.crop.hdr"]
	
       inputs = ["float/"+n+".png.float",
                  "float/"+n+".png.float.hdr"]
 		
 	
       commands = [
  		EFIDIR_PREFIX+"/bin/crop "
 
                          +"  --input "+inputs[0]	 
		          +"  --output "+outputs[0]	
                          +"  --row "+str(row[2])
                          +"  --column "+str(column[2])
                          +"  --nb_rows "+str(nb_rows[2])
                          +"  --nb_columns "+str(nb_columns[2])
		]
       targets.append(target_create(commands, inputs, outputs))

# 4.4. Crop imagette 4

for n in nom_images: 
	
       outputs = ["crop4/"+n+".png.float.crop",
                  "crop4/"+n+".png.float.crop.hdr"]
	
       inputs = ["float/"+n+".png.float",
                  "float/"+n+".png.float.hdr"]
 		
 	
       commands = [
  		EFIDIR_PREFIX+"/bin/crop "
		          +"  --input "+inputs[0]	 
		          +"  --output "+outputs[0]	
                          +"  --row "+str(row[3])
                          +"  --column "+str(column[3])
                          +"  --nb_rows "+str(nb_rows[3])
                          +"  --nb_columns "+str(nb_columns[3])	
		]
       targets.append(target_create(commands, inputs, outputs))
# 4.5. Crop imagette 5

for n in nom_images: 
	
       outputs = ["crop5/"+n+".png.float.crop",
                  "crop5/"+n+".png.float.crop.hdr"]
	
       inputs = ["float/"+n+".png.float",
                  "float/"+n+".png.float.hdr"]
 		
 	
       commands = [
  		EFIDIR_PREFIX+"/bin/crop " 
                          +"  --input "+inputs[0]	 
		          +"  --output "+outputs[0]	
                          +"  --row "+str(row[4])
                          +"  --column "+str(column[4])
                          +"  --nb_rows "+str(nb_rows[4])
                          +"  --nb_columns "+str(nb_columns[4])
		]
       targets.append(target_create(commands, inputs, outputs))

# 4.6. Crop imagette 6

for n in nom_images: 
	
       outputs = ["crop6/"+n+".png.float.crop",
                  "crop6/"+n+".png.float.crop.hdr"]
	
       inputs = ["float/"+n+".png.float",
                  "float/"+n+".png.float.hdr"]
 		
 	
       commands = [
  		EFIDIR_PREFIX+"/bin/crop " 
                          +"  --input "+inputs[0]	 
		          +"  --output "+outputs[0]	
                          +"  --row "+str(row[5])
                          +"  --column "+str(column[5])
                          +"  --nb_rows "+str(nb_rows[5])
                          +"  --nb_columns "+str(nb_columns[5])
		]
       targets.append(target_create(commands, inputs, outputs))
# 5. Project latitude, longitude and elevation in SAR geometry

chain = chain_create("Chamonix_init.mk", targets)
chain_run(chain)

genListImage("crop1/", ".crop", "images.float.crop.list")
genListImage("crop2/", ".crop", "images.float.crop.list")
genListImage("crop3/", ".crop", "images.float.crop.list")
genListImage("crop4/", ".crop", "images.float.crop.list")
genListImage("crop5/", ".crop", "images.float.crop.list")
genListImage("crop6/", ".crop", "images.float.crop.list")

print "blabla"

targets = []

# 5. Dist_corr

window_search_nb_rows = nb_rows
window_search_nb_columns = nb_columns
window_nb_rows = []
window_nb_columns = []

max_deplacement = 10

for i, no in enumerate(window_search_nb_rows):
	window_nb_rows.append(window_search_nb_rows[i]-2*max_deplacement)
	window_nb_columns.append(window_search_nb_columns[i]-2*max_deplacement)

# 5.1. Dist_corr1

inputs = ["crop1/images.float.crop.list"]
 		
f = open(inputs[0])

for noMaster, l in enumerate(f):

	outputs = ["dist_corr1_master_"+str(noMaster)+"/images.float.crop.list.corr"
		   ]

	commands = [
		EFIDIR_PREFIX+"/bin/dist_corr_series "                        
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir dist_corr1_master_"+str(noMaster)	
	       	+"  --no_master "+str(noMaster)
		+"  --window_nb_rows "+str(window_nb_rows[0])
		+"  --window_nb_columns "+str(window_nb_columns[0])	 
		+"  --window_search_nb_rows "+str(window_search_nb_rows[0])	 
		+"  --window_search_nb_columns "+str(window_search_nb_columns[0])
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 0"

		]
	targets.append(target_create(commands, inputs, outputs))

f.close()




# 5.2. Dist_corr2

inputs = ["crop2/images.float.crop.list"]

f = open(inputs[0])

for noMaster, l in enumerate(f):


	outputs = ["dist_corr2_master_"+str(noMaster)+"/images.float.crop.list.corr "
		   ]
 	
	commands = [
		EFIDIR_PREFIX+"/bin/dist_corr_series " 
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir dist_corr2_master_"+str(noMaster)
		+"  --no_master "+str(noMaster)  
		+"  --window_nb_rows "+str(window_nb_rows[1])
		+"  --window_nb_columns "+str(window_nb_columns[1])	 
		+"  --window_search_nb_rows "+str(window_search_nb_rows[1])
		+"  --window_search_nb_columns "+str(window_search_nb_columns[1])
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 0"

		]
	targets.append(target_create(commands, inputs, outputs))

f.close()

# 5.3. Dist_corr3

inputs = ["crop3/images.float.crop.list"]

f = open(inputs[0])

for noMaster, l in enumerate(f):

	outputs = ["dist_corr3_master_"+str(noMaster)+"/images.float.crop.list.corr "
		   ]
 	
	commands = [
		EFIDIR_PREFIX+"/bin/dist_corr_series "
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir dist_corr3_master_"+str(noMaster)
		+"  --no_master "+str(noMaster)		  
		+"  --window_nb_rows "+str(window_nb_rows[2])
		+"  --window_nb_columns "+str(window_nb_columns[2])	 
		+"  --window_search_nb_rows "+str(window_search_nb_rows[2])	 
		+"  --window_search_nb_columns "+str(window_search_nb_columns[2])
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 0"

		]
	targets.append(target_create(commands, inputs, outputs))

# 5.4. Dist_corr4

inputs = ["crop4/images.float.crop.list"]

f = open(inputs[0])

for noMaster, l in enumerate(f):

	outputs = ["dist_corr4_master_"+str(noMaster)+"/images.float.crop.list.corr "
		   ]
	
	commands = [
	EFIDIR_PREFIX+"/bin/dist_corr_series "
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir dist_corr4_master_"+str(noMaster)
		+"  --no_master "+str(noMaster)		  
		+"  --window_nb_rows "+str(window_nb_rows[3])
		+"  --window_nb_columns "+str(window_nb_columns[3])	 
		+"  --window_search_nb_rows "+str(window_search_nb_rows[3])	 
		+"  --window_search_nb_columns "+str(window_search_nb_columns[3])
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 0"
	        ]
	targets.append(target_create(commands, inputs, outputs))


# 5.5. Dist_corr5

inputs = ["crop5/images.float.crop.list"]

f = open(inputs[0])
nbrMaster = 0

for noMaster, l in enumerate(f):
	nbrMaster+=1

	outputs = ["dist_corr5_master_"+str(noMaster)+"/images.float.crop.list.corr "
		   ]	
 	
	commands = [
		EFIDIR_PREFIX+"/bin/dist_corr_series "                       
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir dist_corr5_master_"+str(noMaster)
		+"  --no_master "+str(noMaster)		  
		+"  --window_nb_rows "+str(window_nb_rows[4]) 
		+"  --window_nb_columns "+str(window_nb_columns[4])	 
		+"  --window_search_nb_rows "+str(window_search_nb_rows[4])	 
		+"  --window_search_nb_columns "+str(window_search_nb_columns[4])
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 0"

		]
	targets.append(target_create(commands, inputs, outputs))
f.close()

# 5.6. Dist_corr6

inputs = ["crop6/images.float.crop.list"]

f = open(inputs[0])
nbrMaster = 0

for noMaster, l in enumerate(f):
	nbrMaster+=1

	outputs = ["dist_corr6_master_"+str(noMaster)+"/images.float.crop.list.corr "
		   ]	
 	
	commands = [
		EFIDIR_PREFIX+"/bin/dist_corr_series "                       
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir dist_corr6_master_"+str(noMaster)
		+"  --no_master "+str(noMaster)		  
		+"  --window_nb_rows "+str(window_nb_rows[5]) 
		+"  --window_nb_columns "+str(window_nb_columns[5])	 
		+"  --window_search_nb_rows "+str(window_search_nb_rows[5])	 
		+"  --window_search_nb_columns "+str(window_search_nb_columns[5])
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 0"

		]
	targets.append(target_create(commands, inputs, outputs))
f.close()

# 6.1. cal_slc dx
print nbrMaster

for noImagette in range(1,7):
	for noMaster in range(nbrMaster):

		inputs = ["dist_corr"+str(noImagette)+"_master_"+str(noMaster)+"/images.float.crop.list.corr "]

		outputs = ["dist_corr"+str(noImagette)+"_master_"+str(noMaster)+"_dx/images.float.crop.list.corr.dx "]	
 	
		commands = [
			EFIDIR_PREFIX+"/bin/cal_slc_series "
			+"  --input "+inputs[0] 
			+"  --output_suffix .dx" 
		        +"  --output_dir dist_corr"+str(noImagette)+"_master_"+str(noMaster)+"_dx"
		        +"  --processing 4" 
	
			]

		targets.append(target_create(commands, inputs, outputs))

# 6.2. cal_slc dy
print nbrMaster

for noImagette in range(1,7):
	for noMaster in range(nbrMaster):

		inputs = ["dist_corr"+str(noImagette)+"_master_"+str(noMaster)+"/images.float.crop.list.corr "]

		outputs = ["dist_corr"+str(noImagette)+"_master_"+str(noMaster)+"_dy/images.float.crop.list.corr.dy "]	
 	
		commands = [
			EFIDIR_PREFIX+"/bin/cal_slc_series "
			+"  --input "+inputs[0] 
			+"  --output_suffix .dy" 
		        +"  --output_dir dist_corr"+str(noImagette)+"_master_"+str(noMaster)+"_dy"
		        +"  --processing 5" 
	
			]

		targets.append(target_create(commands, inputs, outputs))


# 7.  crop imagette
blac_area_columns = []
blac_area_rows = []
for i, no in enumerate(window_search_nb_columns):
	blac_area_columns.append((window_search_nb_columns[i]-1)/2)
	blac_area_rows.append((window_search_nb_rows[i]-1)/2)
	nb_columns[i]=nb_columns[i]-2*blac_area_columns[i]
	nb_rows[i]=nb_rows[i]-2*blac_area_rows[i]

# 7.1.a.  crop imagette 1 dx

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr1_master_"+str(noMaster)+"_dx/crop/images.float.crop.list.corr.dx.crop"]
	
	inputs = ["dist_corr1_master_"+str(noMaster)+"_dx/images.float.crop.list.corr.dx "]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr1_master_"+str(noMaster)+"_dx/crop/"
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[0])
                          +"  --nb_rows "+str(nb_rows[0])
                          +"  --nb_columns "+str(nb_columns[0]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))

# 7.1.b.  crop imagette 1 dy

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr1_master_"+str(noMaster)+"_dy/crop/images.float.crop.list.corr.dy.crop"]
	
	inputs = ["dist_corr1_master_"+str(noMaster)+"_dy/images.float.crop.list.corr.dy"]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr1_master_"+str(noMaster)+"_dy/crop/"
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[0])
                          +"  --nb_rows "+str(nb_rows[0])
                          +"  --nb_columns "+str(nb_columns[0]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))

# 7.2.a.  crop imagette 2 dx

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr2_master_"+str(noMaster)+"_dx/crop/images.float.crop.list.corr.dx.crop"]
	
	inputs = ["dist_corr2_master_"+str(noMaster)+"_dx/images.float.crop.list.corr.dx"]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr2_master_"+str(noMaster)+"_dx/crop/"
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[1])
                          +"  --nb_rows "+str(nb_rows[1])
                          +"  --nb_columns "+str(nb_columns[1]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))

# 7.2.b.  crop imagette 2 dy

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr2_master_"+str(noMaster)+"_dy/crop/images.float.crop.list.corr.dy.crop"]
	
	inputs = ["dist_corr2_master_"+str(noMaster)+"_dy/images.float.crop.list.corr.dy"]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr2_master_"+str(noMaster)+"_dy/crop/"
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[1])
                          +"  --nb_rows "+str(nb_rows[1])
                          +"  --nb_columns "+str(nb_columns[1]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))

# 7.3.a.  crop imagette 3 dx

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr3_master_"+str(noMaster)+"_dx/crop/images.float.crop.list.corr.dx.crop"]
	
	inputs = ["dist_corr3_master_"+str(noMaster)+"_dx/images.float.crop.list.corr.dx"]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr3_master_"+str(noMaster)+"_dx/crop/"
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[2])
                          +"  --nb_rows "+str(nb_rows[2])
                          +"  --nb_columns "+str(nb_columns[2]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))

# 7.3.b.  crop imagette 3 dy

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr3_master_"+str(noMaster)+"_dy/crop/images.float.crop.list.corr.dy.crop"]
	
	inputs = ["dist_corr3_master_"+str(noMaster)+"_dy/images.float.crop.list.corr.dy"]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr3_master_"+str(noMaster)+"_dy/crop/"
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[2])
                          +"  --nb_rows "+str(nb_rows[2])
                          +"  --nb_columns "+str(nb_columns[2]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))
  
# 7.4.a.  crop imagette 4 dx

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr4_master_"+str(noMaster)+"_dx/crop/images.float.crop.list.corr.dx.crop"]
	
	inputs = ["dist_corr4_master_"+str(noMaster)+"_dx/images.float.crop.list.corr.dx"]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr4_master_"+str(noMaster)+"_dx/crop/"
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[3])
                          +"  --nb_rows "+str(nb_rows[3])
                          +"  --nb_columns "+str(nb_columns[3]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))

# 7.4.b.  crop imagette 4 dy

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr4_master_"+str(noMaster)+"_dy/crop/images.float.crop.list.corr.dy.crop"]
	
	inputs = ["dist_corr4_master_"+str(noMaster)+"_dy/images.float.crop.list.corr.dy"]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr4_master_"+str(noMaster)+"_dy/crop/"
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[3])
                          +"  --nb_rows "+str(nb_rows[3])
                          +"  --nb_columns "+str(nb_columns[3]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))

# 7.5.a.  crop imagette 5 dx

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr5_master_"+str(noMaster)+"_dx/crop/images.float.crop.list.corr.dx.crop"]
	
	inputs = ["dist_corr5_master_"+str(noMaster)+"_dx/images.float.crop.list.corr.dx"]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr5_master_"+str(noMaster)+"_dx/crop/"	
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[4])
                          +"  --nb_rows "+str(nb_rows[4])
                          +"  --nb_columns "+str(nb_columns[4]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))

# 7.5.b.  crop imagette 5 dy

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr5_master_"+str(noMaster)+"_dy/crop/images.float.crop.list.corr.dy.crop"]
	
	inputs = ["dist_corr5_master_"+str(noMaster)+"_dy/images.float.crop.list.corr.dy"]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr5_master_"+str(noMaster)+"_dy/crop/"
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[4])
                          +"  --nb_rows "+str(nb_rows[4])
                          +"  --nb_columns "+str(nb_columns[4]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))

# 7.6.a.  crop imagette 6 dx

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr6_master_"+str(noMaster)+"_dx/crop/images.float.crop.list.corr.dx.crop"]
	
	inputs = ["dist_corr6_master_"+str(noMaster)+"_dx/images.float.crop.list.corr.dx"]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr6_master_"+str(noMaster)+"_dx/crop/"	
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[5])
                          +"  --nb_rows "+str(nb_rows[5])
                          +"  --nb_columns "+str(nb_columns[5]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))

# 7.6.b.  crop imagette 6 dy

for noMaster in range(nbrMaster):
	
	outputs = ["dist_corr6_master_"+str(noMaster)+"_dy/crop/images.float.crop.list.corr.dy.crop"]
	
	inputs = ["dist_corr6_master_"+str(noMaster)+"_dy/images.float.crop.list.corr.dy"]
 		
 	
	commands = [
  		EFIDIR_PREFIX+"/bin/crop_series "
                          +"  --input "+inputs[0]	 
		          +"  --output_suffix .crop"
		          +"  --output_dir dist_corr6_master_"+str(noMaster)+"_dy/crop/"
                          +"  --row 0"
                          +"  --column "+str(blac_area_columns[5])
                          +"  --nb_rows "+str(nb_rows[5])
                          +"  --nb_columns "+str(nb_columns[5]),
		EFIDIR_PREFIX+"/bin/statistics_series "
		          +"  --input "+outputs[0]
		]
	targets.append(target_create(commands, inputs, outputs))

chain = chain_create("Chamonix.mk", targets)
chain_save(chain, "process_region_argentiere_camera.mk")
chain_run(chain)
#sys.exit(0)
targets = []

# 7.1. statistic dx

for noImagette in range(1,7):
	for noMaster in range(nbrMaster):

		inputs = ["dist_corr"+str(noImagette)+"_master_"+str(noMaster)+"_dx/crop/images.float.crop.list.corr.dx.crop"]

		f = open(inputs[0])
		outputs = []
		for name in f:
			outputs.append("dist_corr"+str(noImagette)+"_master_"+str(noMaster)+"_dx/crop/"+name.rstrip("\n")+".hdr.stats")
		f.close()
 	
		commands = [
			EFIDIR_PREFIX+"/bin/statistics_series "


			+"  --input "+inputs[0] 
		
			]

		targets.append(target_create(commands, inputs, outputs))


# 7.2. statistic dy

for noImagette in range(1,7):
	for noMaster in range(nbrMaster):

		inputs = ["dist_corr"+str(noImagette)+"_master_"+str(noMaster)+"_dy/crop/images.float.crop.list.corr.dy.crop"]

		f = open(inputs[0])
		outputs = []
		for name in f:
			outputs.append("dist_corr"+str(noImagette)+"_master_"+str(noMaster)+"_dy/crop/"+name.rstrip("\n")+".hdr.stats")
		f.close()
 	
		commands = [
			EFIDIR_PREFIX+"/bin/statistics_series "
			+"  --input "+inputs[0] 
		
			]

		targets.append(target_create(commands, inputs, outputs))


chain = chain_create("Chamonix.mk", targets)
chain_save(chain, "process_region_argentiere_camera.mk")
chain_run(chain)




# 8. compute POIs

POIsX = []
POIsY = []

for noImagette in range(nbr_imagette):
	POIsX.append([])
	POIsY.append([])
	for i in range(nbr_images):
		POIsX[noImagette].append(0)
		POIsY[noImagette].append(0)
	


for noImagette in range(nbr_imagette):
	POIsX[noImagette][master_image] = row[noImagette]+nb_rows[noImagette]/2
	POIsY[noImagette][master_image] = column[noImagette]+nb_columns[noImagette]/2


for noImagette in range(nbr_imagette):
	f = open("dist_corr"+str(noImagette+1)+"_master_"+str(master_image)+"_dx/crop/images.float.crop.list.corr.dx.crop", "r")
	i=0
	for name in f:
		if(i==master_image):
			i=i+1
		hdr=readHDR("dist_corr"+str(noImagette+1)+"_master_"+str(master_image)+"_dx/crop/"+name.rstrip("\n")+".hdr")
		POIsX[noImagette][i] = POIsX[noImagette][master_image] + float(hdr["EFIDIR_average_band_0"][1:][:-1])
		i=i+1


for noImagette in range(nbr_imagette):
	f = open("dist_corr"+str(noImagette+1)+"_master_"+str(master_image)+"_dy/crop/images.float.crop.list.corr.dy.crop", "r")
	i=0
	for name in f:
		if(i==master_image):
			i=i+1
		hdr=readHDR("dist_corr"+str(noImagette+1)+"_master_"+str(master_image)+"_dy/crop/"+name.rstrip("\n")+".hdr")
		POIsY[noImagette][i] = POIsY[noImagette][master_image] + float(hdr["EFIDIR_average_band_0"][1:][:-1])
		i=i+1

#for noImagette in range(nbr_imagette):
#	print noImagette
#	print POIsX[noImagette]

# 9.  image registration

i=0

for n in nom_images: 
	if (i!=master_image):
		outputs = ["registration_master_"+str(master_image)+"/"+n+".reg"]#,
			   #"registration_master_"+str(master_image)+"/"+n+".png.hdr"]
	
		inputs = ["grey/"+nom_images[master_image]+".png",
			  "grey/"+n+".png"]

		commands = [
			EFIDIR_PREFIX+"/bin/registration "
                        +"  --master "+inputs[0]		 
		        +"  --slave "+inputs[1]
		        +"  --output "+outputs[0]	 
			+"  --master_POI series["+str(POIsX[0][master_image])+","+str(POIsY[0][master_image])+","
			                   +str(POIsX[1][master_image])+","+str(POIsY[1][master_image])+","
			                   +str(POIsX[2][master_image])+","+str(POIsY[2][master_image])+","
			                   +str(POIsX[3][master_image])+","+str(POIsY[3][master_image])+","
			                   +str(POIsX[4][master_image])+","+str(POIsY[4][master_image])+"]"
			+"  --slave_POI series["+str(POIsX[0][i])+","+str(POIsY[0][i])+","
			                  +str(POIsX[1][i])+","+str(POIsY[1][i])+","
			                  +str(POIsX[2][i])+","+str(POIsY[2][i])+","
			                  +str(POIsX[3][i])+","+str(POIsY[3][i])+","
			                  +str(POIsX[4][i])+","+str(POIsY[4][i])+"]"
			+"  --registration_type 2"
			]
		targets.append(target_create(commands, inputs, outputs))
	i=i+1

# 10. convert registered image to float

i=0

for n in nom_images: 
	if (i!=master_image):
		inputs = ["registration_master_"+str(master_image)+"/"+n+".reg"]
	
		outputs = ["float_registration_master_"+str(master_image)+"/"+n+".float"]

		commands = [
			EFIDIR_PREFIX+"/bin/convert_datatype "
                              +"  --input "+inputs[0]		 
		              +"  --output "+outputs[0]		
		              +"  --output_datatype 4 "
			]
		targets.append(target_create(commands, inputs, outputs))
	i=i+1

chain = chain_create("Chamonix_init.mk", targets)
chain_run(chain)

shutil.copy("float/"+nom_images[master_image]+".png.float", "float_registration_master_"+str(master_image)+"/")
shutil.copy("float/"+nom_images[master_image]+".png.float.hdr", "float_registration_master_"+str(master_image)+"/")

genListImage("float_registration_master_"+str(master_image)+"/", ".float", "images.list")

targets = []

# 11. compute 2D displacements t t+1

inputs = ["float_registration_master_"+str(master_image)+"/images.list"]
outputs = ["disp2D_registration_master_"+str(master_image)+"_n_n1/images.list.corr"]

commands = [
		EFIDIR_PREFIX+"/bin/dist_corr_series "                        
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir disp2D_registration_master_"+str(master_image)+"_n_n1/"
	       	+"  --no_master "+str(master_image)
		+"  --window_nb_rows 33"
		+"  --window_nb_columns 33"
		+"  --window_search_nb_rows 53"
		+"  --window_search_nb_columns 53"
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 1"

		]
targets.append(target_create(commands, inputs, outputs))

# 12. compute 2D displacements t t+2

inputs = ["float_registration_master_"+str(master_image)+"/images.list"]
outputs = ["disp2D_registration_master_"+str(master_image)+"_n_n2/images.list.corr"]

commands = [
		EFIDIR_PREFIX+"/bin/dist_corr_series "                        
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir disp2D_registration_master_"+str(master_image)+"_n_n2/"
	       	+"  --no_master "+str(master_image)
		+"  --window_nb_rows 33"
		+"  --window_nb_columns 33"
		+"  --window_search_nb_rows 53"
		+"  --window_search_nb_columns 53"
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 2"

		]
targets.append(target_create(commands, inputs, outputs))

# 13. compute 2D displacements t t+3

inputs = ["float_registration_master_"+str(master_image)+"/images.list"]
outputs = ["disp2D_registration_master_"+str(master_image)+"_n_n3/images.list.corr"]

commands = [
		EFIDIR_PREFIX+"/bin/dist_corr_series "                        
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir disp2D_registration_master_"+str(master_image)+"_n_n3/"
	       	+"  --no_master "+str(master_image)
		+"  --window_nb_rows 33"
		+"  --window_nb_columns 33"
		+"  --window_search_nb_rows 53"
		+"  --window_search_nb_columns 53"
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 3"

		]
targets.append(target_create(commands, inputs, outputs))

# 14. compute 2D displacements t t+4

inputs = ["float_registration_master_"+str(master_image)+"/images.list"]
outputs = ["disp2D_registration_master_"+str(master_image)+"_n_n4/images.list.corr"]

commands = [
		EFIDIR_PREFIX+"/bin/dist_corr_series "                        
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir disp2D_registration_master_"+str(master_image)+"_n_n4/"
	       	+"  --no_master "+str(master_image)
		+"  --window_nb_rows 33"
		+"  --window_nb_columns 33"
		+"  --window_search_nb_rows 53"
		+"  --window_search_nb_columns 53"
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 4"

		]
targets.append(target_create(commands, inputs, outputs))

# 15. compute 2D displacements t t+5

inputs = ["float_registration_master_"+str(master_image)+"/images.list"]
outputs = ["disp2D_registration_master_"+str(master_image)+"_n_n5/images.list.corr"]

commands = [
		EFIDIR_PREFIX+"/bin/dist_corr_series "                        
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir disp2D_registration_master_"+str(master_image)+"_n_n5/"
	       	+"  --no_master "+str(master_image)
		+"  --window_nb_rows 33"
		+"  --window_nb_columns 33"
		+"  --window_search_nb_rows 53"
		+"  --window_search_nb_columns 53"
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 5"

		]
targets.append(target_create(commands, inputs, outputs))

# 16. compute 2D displacements t t+10

inputs = ["float_registration_master_"+str(master_image)+"/images.list"]
outputs = ["disp2D_registration_master_"+str(master_image)+"_n_n10/images.list.corr"]

commands = [
		EFIDIR_PREFIX+"/bin/dist_corr_series "                        
		+"  --input_file_name "+inputs[0]		 
		+"  --output_suffix .corr" 
 		+"  --output_dir disp2D_registration_master_"+str(master_image)+"_n_n10/"
	       	+"  --no_master "+str(master_image)
		+"  --window_nb_rows 33"
		+"  --window_nb_columns 33"
		+"  --window_search_nb_rows 53"
		+"  --window_search_nb_columns 53"
		+"  --sub_pixel 3"	 
		+"  --intercorrelation_mode 10"

		]
targets.append(target_create(commands, inputs, outputs))

chain = chain_create("Chamonix.mk", targets)
chain_save(chain, "process_region_argentiere_camera.mk")
chain_run(chain)
