#!/usr/bin/perl
#

$pid = getpgrp(0);
open(PROC_LOG, ">>../../LOGS_PROC/log.process-$pid");

die "exiting\n" > PROC_LOG
    if -e "xxWORKING_DIRxxIMAGES/RAW/$ARGV[0]/processing_started";
`echo "processing started" > xxWORKING_DIRxxIMAGES/RAW/$ARGV[0]/processing_started`;

open(CYCLETABLE, "cycle_id_table.txt");

$cycle_num = 0;
while (<CYCLETABLE>){
    $_ =~ /^([\d]+)\t.+\t.+$/g; #input is cycle_num\tcycle_pos\tcycle_type\n
    $cycle_num = $1;
    $cycle_num++;
    $cycle_num--;
}
$dir_counter = $cycle_num + 1;
close(CYCLETABLE);

$time = gmtime;
print PROC_LOG "$time STARTING CYCLE NUMBER FOR THIS SET ($ARGV[0]) IS $dir_counter\n";

$cyc1 = $dir_counter;
$cyc2 = $dir_counter + 1;
$cyc3 = $dir_counter + 2;
$cyc4 = $dir_counter + 3;

$name = $ARGV[0];

$time = gmtime;
print PROC_LOG "$time Executing convert_raw...\n";
$convert_raw = `./convert_raw $name/`;
print PROC_LOG "$convert_raw\n";

$convert_raw = `rm $name/*.raw`;
print PROC_LOG "$convert_raw\n";

$time = gmtime;
print PROC_LOG "$time Making symlinks...\n";
`echo "$name H" > link_list`;
$mklinks = `./make_links.pl link_list link_cmds $dir_counter`;
print PROC_LOG "$mklinks\n";
`chmod a+x link_cmds`;
`./link_cmds`;

$time = gmtime;
print PROC_LOG "$time Aligning images from dirs $cyc1 $cyc2 $cyc3 $cyc4...\n";
$register_output = `../../EXEC/register 1000 1000 xxWORKING_DIRxx 999 20000 xxBRIGHTFIELD_THRESHxx 1 20 $cyc1 $cyc2 $cyc3 $cyc4`;
#$register_output = `../../EXEC/register3 xxWORKING_DIRxx 999 9000 1 25 $cyc1 $cyc2 $cyc3 $cyc4`;
print PROC_LOG "$register_output\n";

$time = gmtime;
print PROC_LOG "$time Extracting fluorescence values from dirs $cyc1 $cyc2 $cyc3 $cyc4...\n";
$pixel_pull3_output = `../../EXEC/pixel_pull3 1000 1000 xxWORKING_DIRxx $cyc1 $cyc2 $cyc3 $cyc4`;
print PROC_LOG "$pixel_pull3_output\n";

open(MATLAB_COMMAND, ">../../PROC/DATASETS/qc_command.m");
print MATLAB_COMMAND "qc_cycle($cyc1, \'xxWORKING_DIR_NOSLASHxx\', 1)\n";
close(MATLAB_COMMAND);
$matlab_exec = `cd ../../PROC/DATASETS; matlab -display :0.0 -logfile qc_logfile_$cyc1 < qc_command.m; cd ../../IMAGES/RAW`;
print PROC_LOG "$matlab_exec\n";

$time = gmtime;
print PROC_LOG "$time Finished processing.\n";

close(PROC_LOG);
