#!/usr/bin/perl
use strict;
use warnings;
die "\nUsage: cut chromosome to scaffolds;\ncommands:\nperl $0 snpdata scafflod.use.list pb/bb\n\n" if ( @ARGV != 3 );
my $snpdb = shift;
my $scaf_list = shift;
my $aa = shift; # $aa = pb or bb
open AA, $snpdb or die " can not open the snpdb file: $!";
open BB, $scaf_list or die " can not open the scaffold list file :$!";
my %chr = ();
my %scaf = ();
my %start = ();
my %end = ();
my $i = 0;
while ( <BB> ) {
$i++;
my @tt = split /\s+/;
$chr{$i} = $tt[0];
$scaf{$i} = $tt[1];
$start{$i} = $tt[2];
$end{$i} = $tt[3];
}
close BB;
my $num = keys %chr;
my $outfile = "/ifs5/ST_COMG/USER/yanzengli/tajima/data/$chr{1}/$scaf{1}/$chr{1}.$scaf{1}.$aa.snp";
open OUT,">", $outfile or die $!;
my $flag = 1;
my $judge = 1;
while ( <AA> ) {
my @tt = split /\s+/;
while ( $flag <= $num ) {
if ( ($start{$flag} <= $tt[1]) && ($tt[1] <= $end{$flag}) ) {
$tt[1] = $tt[1] - $start{$flag} + 1;
if ( $judge == $flag ) {
foreach ( @tt ) { print OUT "$_\t"; }
print OUT "\n";
last;
}else{
$judge = $flag;
close OUT;
$outfile = "/ifs5/ST_COMG/USER/yanzengli/tajima/data/$chr{$flag}/$scaf{$flag}/$chr{$flag}.$scaf{$flag}.$aa.snp";
open OUT, ">", $outfile or die $!;
foreach ( @tt ) { print OUT "$_\t"; }
print OUT "\n";
last;
}
}
$flag++;
}
}
close AA;
close OUT;
cut chromosome to scanffolds.