#!/usr/bin/perl -w

use strict;

#Entferne Duplikate innerhalb der Wiesen
#Ausgabe der selektierten Daten
#(Name, Frequenz, Genotype)

open(SelData, ">>selData.txt") or die $!;   
               
print SelData "KEY \t\t Frequenz \t\t Genotype \n";

#Fuer alle Wiesen (x Anzahl Wiesen) : Daten selektieren
for (my $x=0; $x<=36; $x++){

  my @data_z=0;  			#Daten zeilenweise
  my @data_e=0;				#Daten einzeln
  my @data=0;				#selektierte Daten
  my @name=0;
  my @samples=0;
  my @freq=1;
  
  
  my $datei=0;				
  my $laenge_z=0;			#Laengen zu Arrays oben
  my $laenge_e=0;
  my $laenge=0;

  $datei = "wiese".$x.".txt";

  open(DATA,"<$datei") or die $!;

  while(<DATA>){			#Daten einer Wiese zeilenweise einlesen

    push(@data_z,$_); 

  }


  @name= split(/\s+/,$data_z[2]);
  @samples= split(/\s+/,$data_z[5]);


  #Fuer alle Zeilen: Anfangsfrequenz=1  
  for (my $y=0; $y<($samples[1]-1); $y++){
      push(@freq,1);			
  }

  $laenge_z = scalar @data_z;
  
  #Fuer alle Zeilen: splitten in Einzelzeichen
  for(my $j=6; $j<$laenge_z; $j++){

	push(@data_e,split(/\s+/,$data_z[$j]));
        
  }

  shift(@data_e);			#erstes Element=0 loeschen

  my $k=0;				#Hilfsvariablen
  my $i=0;
  my $s=$samples[1]+1;

  #Fuer alle Zeilen: Finde Duplikate 
  for (my $j=0; $j<(14*($samples[1]-1)); $j+=14){
  
  $s -= 1;
  $k=1;

       #Fuer jede Spalte
       for($i=0; $i<14; $i++){
 
        if($k!= $s){	
   
         #wenn Werte in einer Spalte gleich   
         if(($data_e[$j+$i]==$data_e[$j+($k*14)+$i]) && $data_e[$j+$i] != 0 ){
             
             #wenn letzte Spalte erreicht, d.h alle Werte waren identisch     
             if($i==13) { 
                                  
                  $freq[($j/14)] += 1;		#erhoehe Frequenz fuer Vergleichszeile um 1
                  $freq[($k+$j/14)] = 0;        #setze aktuelle Zeilenfrequenz auf 0
  my @freq=1;
                  #Fuer alle Werte in der Zeile: setze Werte auf 0 (loeschen)
                  for(my $l=($j+($k*14)); $l<=($j+($k*14)+$i); $l++){
                      $data_e[$l]="0";         
                  }  
                 
                  $k++;				#untersuche naechste Zeile
                  $i=-1;    
                  
             }

             #sonst vergleiche weiter (naechste Spalte)
             else{}                
         }

         #sonst untersuche naechste Zeile   
         else{
             $k++;
             $i=-1; 
             
         }  
       }

     }

  }


  $laenge_e = scalar @data_e; 

  my $c=0;			#Hilfsvariable

  #Fuer alle Zeilen: loesche die mit 0 als Wert
  for(my $i=0; $i<$laenge_e; $i+=14){

     my $j=0;

     #Fuer alle Werte in der Zeile
     for($j=($i+$j); $j<($i+14); $j++){
  
        # uebernimm die != 0 in data
        if($data_e[$j] != 0){
          push(@data,$data_e[$j]);
        }
        # sonst uberspringen und Frequenzwert an dieser Stelle loeschen
        else{
          $j=($i+14);
          splice(@freq,(($i/14)-$c),1);
          $c++;
        }
     }
  }


  shift(@data);				#erstes Element=0 loeschen

  $laenge = scalar @data;

  #Fuer alle uebrigen Werte: schreibe in Datei
  for(my $i=0; $i<$laenge; $i+=14){

     print SelData "$name[0]       \t $freq[$i/14] \t\t"; 	#jeder Organismus einzelnen aufgelistet

     my $j=0;

     for($j=($i+$j); $j<($i+14); $j++){
        print SelData "$data[$j] ";
     }

     print SelData "\n";
  }
  

close(DATA);
 
}



