#!/usr/bin/perl

# Dieses Programm einfach ausfuehren. Es sammelt alle motifs aus den Dateien mit Endung *.merged
# und erstellt eine Sequenz zu jedem hox, ob die motife vorkommen oder nicht.

use strict;
use IO::File; 

#my $infile = $ARGV[0];
my $outfile = "";
my %motifs;
my $motif;
my @sortlist;
my @fields;

STDOUT->autoflush(1);


# Einlesen aller motifnamen aus der merge Datei, dann sortieren in @sortlist
my @files = glob("./*merged");

foreach my $file (@files) {

	open(FILEIN, "<$file") || die ("kann net offnen $file .");

	while(<FILEIN>) {

		@fields = split(" ", $_);
		$motif = $fields[3];
		$motifs{$motif} = "\n";
	
	}
	
}

@sortlist = ( (sort keys %motifs));

print $#sortlist + 1 . " motifs in list.\n";


#pro hox ein fasta-file erzeugen, wenn motif vorhanden 1, wenn nicht 0

my $binaryseq;
my $fastaheader;

foreach my $file (@files) {

  $file =~ s/^.\///;

  $fastaheader = "> " . $file;
  $outfile = $file . ".bin";
	
  open(FILEIN, "<$file") || die ("$file geht nicht auf");

  # Reset sequenz
  $binaryseq = "";
	
  foreach $motif (@sortlist) {

    # move file pointer to start of file
    seek( FILEIN, 0, 0 );
		
    my $stelle = "0";
	
    while(<FILEIN>) {
	
      @fields = split(" ", $_);
	
      if( ($motif eq $fields[3])) {
	
	$stelle = "1";
	last;
      }
    }
    
    $binaryseq .= $stelle;

  }
	
  # create fasta style entry
  my $result = $fastaheader . "\n" . $binaryseq . "\n";

  print ".";
 
  open (OUTFILE, '>', $outfile) or die "Kann nisch offnen  \'$outfile\' zum schreiben!";
  print OUTFILE $result;
  
  close(OUTFILE);
  close(FILEIN);
	
}



print "\n";
exit;
