##
chr1 104 104 0 0 +
chr1 145 145 0 0 +
chr1 205 205 0 0 +
chr1 600 600 0 0 +
chr3 500 500 0 0 +
chr4 150 150 0 0 +
chr4 175 175 0 0 +
chr7 400 400 0 0 +
chr7 550 550 0 0 +
chr9 100 100 0 0 +
chr11 680 680 0 0 +
chr11 681 681 0 0 +
chr24 105 105 0 0 +
chr24 110 110 0 0 +
chr24 350 350 0 0 +
####
#!/usr/bin/perl
use warnings; use strict;
my $region = 'testReg.txt';
my $position = 'testPos.txt';
my $writeOut = '>>testOut.txt';
open(R,$region) or die "error reading file";
open(OUT,$writeOut) or die "error writing to the file ";
open(P, $position) or die "error reading file ";
my $rline;
my $pline;
while ($rline=) {
chomp($rline);
my @r_arr=split("\t",$rline);
chomp($r_arr[0]);
my @rID = split("r",$r_arr[0]);
$r_arr[0] = $rID[1]; #this removes the "chr" portion of the first element and leaves number
#i.e. instead of [0] -> "chr24"; [0] -> "24"
while($pline=) {
if(!$rline) {
last;
} #end if
chomp($pline);
my @p_arr=split("\t",$pline);
chomp($p_arr[0]);
my @pID = split("r",$p_arr[0]);
$p_arr[0] = $pID[1];
if($p_arr[1]>$r_arr[2]) {
$rline=;
redo;
} #end if
else {
if($p_arr[0] == $r_arr[0] && $p_arr[1] >= $r_arr[1] && $p_arr[1] <= $r_arr[2]) {
#NOTE: [0] element in each array now corresponds to chr number
# r[1] is start of region and r[2] is end of region
# p[1] is the position of the base pair
shift(@p_arr);
print (OUT "chr$r_arr[0]\t$r_arr[1]\t$r_arr[2]\t$r_arr[3]\t");
print OUT join ("\t", @p_arr), "\n";
#essentially I'm joining the two files with matching lines
#w/ columns separated by tab
} #end if
} #end else
} # end while
} #end while
close R;
close P;
close OUT;
##
##
chr1 100 159 0 104 104 0 0 +
chr1 100 159 0 145 145 0 0 +
####
chr1 100 159 0 chr1 104 104 0 0 +
chr1 100 159 0 chr1 145 145 0 0 +
chr1 200 260 0 chr1 205 205 0 0 +
chr1 500 750 0 chr1 600 600 0 0 +
chr3 450 700 0 chr3 500 500 0 0 +
chr4 100 300 0 chr4 150 150 0 0 +
chr4 100 300 0 chr4 175 175 0 0 +
chr7 350 600 0 chr7 400 400 0 0 +
chr7 350 600 0 chr7 550 550 0 0 +
chr9 100 125 0 chr9 100 100 0 0 +
chr11 679 687 0 chr11 680 680 0 0 +
chr11 679 687 0 chr11 681 681 0 0 +
chr22 100 200 0 chr22 105 105 0 0 +
chr22 100 200 0 chr22 110 110 0 0 +
chr22 300 400 0 chr22 350 350 0 0 +