#!/usr/bin/perl

# Als Eingabe dient hier eine *.res, also die Datei mit dem Ergebnis von
# dem MatCompare System.
# Das Programm oeffnet alle zum Organismus dazugehoerigen *.data Dateien
# (im Format: start end score etc.) und fuegt die Motifnr. zusammen.
# Es werden fuer jede data Datei eine neue erstellt mit Endung merged.


use IO::Handle;

my $infile = $ARGV[0];
my $outfile;
my @fields;
my @motiffinder;
my $motifnumber, $motifname;
my @files;
my $file;
my @hoxfields;
my $von, $bis, $score, $seq, $rev, $hoxviech, $oldscore, $oldmotifnumber;
my $program = $ARGV[1];
my $result;
my @foundmotifs;

my $viech = $infile;

$viech =~ s/^.\///;
$viech = substr($viech, 0, index($viech, "."));
print $viech."\n";

open(FILEIN, "<$infile") || die ("kann net offnen $infile .");
#@files = glob("$viech*.data");
@files = glob("*.data");
my $nrfiles = $#files + 1;
print $nrfiles . " $viech*.data Dateien werden geoeffnet.\n";

# allet schoen raus da
STDOUT->autoflush(1);


while(<FILEIN>) {

	@fields = split(" ", $_);


	# @motiffinder sieht etwa so aus:
	# M.DrAa_motif_1_ACE M00187 0.9877

	@motiffinder = split("_", $fields[0]);
	$motifnumber = $motiffinder[2];


	$motifname = $fields[1];
	$score = $fields[2];
	
	push(@foundmotifs, $motifnumber);
	
	foreach $file (@files) {
	 

	  open(HOXIN, "<$file") || ("$file geht nicht auf");

	  while(<HOXIN>) {
			
			
	    @hoxfields = split(" ", $_);
					
	    $oldmotifnumber = $hoxfields[3];
			
	    if( ($motifnumber == $oldmotifnumber)) {
	
	      $result = $hoxfields[0] . "\t" . $hoxfields[1] . "\t" . $score . "\t" . $motifname . "\t" . $hoxfields[4] . "\t" . $hoxfields[5] . "\t" . $hoxfields[6] . "\t" . $hoxfields[7] . "\t" . $hoxfields[2] . "\t" . $oldmotifnumber . "\n";
		
	      # progress..
	      print ".";
	      
	      $outfile = $file . ".merged";
			
	      open (OUTFILE, '>>', $outfile) or die "Kann nisch offnen  \'$outfile\' zum schreiben!";
	      print OUTFILE $result;
	      
	    }
	    
	  }
		close(HOXIN);
	}

	
}
close(OUTFILE);

# noDB erstellen
foreach $file (@files) {

	open(HOXIN, "<$file") || ("$file geht nicht auf");

	while(<HOXIN>) {
			
		$found =0;	
	    	@hoxfields = split(" ", $_);
					
	    	$oldmotifnumber = $hoxfields[3];
			
	    	for (my $i = 0; $i < $#foundmotifs; $i++) {
	    	
			if( ($oldmotifnumber == $foundmotifs[$i]) ) {
		
				$found =1;
			}
		}
		
		if ( $found == 0) {
	
	    	  	# progress..
	    	  	print ".";
	      
	    	  	$outfile = $file . ".merged";
			
	    	  	open (OUTFILE, '>>', $outfile) or die "Kann nisch offnen  \'$outfile\' zum schreiben!";
	   	  	print OUTFILE $_;
	     	 
	  	}
	    
	}
	
	close(HOXIN);
}

exit;
