#!/usr/bin/env perl

# Autor:	Katrin Grothaus
# Suche nach Überlappungen von repetitiven Sequenzen in der Region +-1000bp von Retrokopien
# Eingabe: 	Regions-Datei 
#			Repeat-Datei 

# Aufruf: 	Suche_repeats_in_umgebung_retrokopie.pl <Regions-Datei> <Repeat-Datei>

use warnings;
use strict;

# Variablen für die Eingabedateien
my $infile_region=$ARGV[0];
my $infile_repeat=$ARGV[1];

# Variablen für die Ausgabedateien
my $outfile_region_wrepeat="Region_with_repeat_".$infile_region;

# benötigte Variablen für die unterschiedlichen Berechnungen und Parameter
my @region;
my @repeats;
my $counter=0;

# Einlesen der Repeat-Datei in ein Array
open(IN2, $infile_repeat) or die "Can't open file: $!\n";
	@repeats= <IN2>;
close IN2;

# Öffnen der Ausgabedateien zum Schreiben der Ergebnisse
open(OUTW,">".$outfile_region_wrepeat);

# Einlesen der Regions-Datei zeilenweise mit Aufsplitten jeder Zeile in die unterschiedlichen Variablen
open(IN, $infile_region) or die "Can't open file: $!\n";
while(<IN>){
	my $region = $_;
	my @values_region = split('\t',$region);
	chomp($region);
	my $region_chr=$values_region[0];
	my $region_Start=$values_region[1];
	my $region_End=$values_region[2];
	
	#START: Durchgehen der Repeat-Datei
	for (my $i=0;$i<@repeats;$i++){
		my $repeat=$repeats[$i];
		chomp($repeat);
		my @values_repeats=split('\t',$repeat);

		my $repeat_chr=$values_repeats[5];
		my $repeat_Start=$values_repeats[6];
		my $repeat_End=$values_repeats[7];
		my $repeat_type1=$values_repeats[11];
		my $repeat_type2=$values_repeats[12];	
		# Vergleich ob die einzelnen Positionen überlappen
		if ((($repeat_Start>=$region_Start) && ($repeat_Start<=$region_End))||(($repeat_Start<=$region_Start) && ($repeat_End>=$region_End))||(($repeat_End>=$region_Start) && ($repeat_End<=$region_End))){
			# Ausgabe
			print OUTW $region."\t".$repeat_chr."\t".$repeat_Start."\t".$repeat_End."\t".$repeat_type1."\t".$repeat_type2."\n";
			$counter=1;
		}
	
	#ENDE: Durchgehen der Repeat-Datei
	}
	if ($counter==0){
		# Ausgabe wenn keine Überlappung stattfindet
		print OUTW $region."\n";
		$counter=0;
	}
# while(<IN>) ENDE
}
close(IN);
close(OUTW);


