#!/usr/bin/perl -w # created by Jun Wang # last modified: 10.16.06 use strict; #use Data::Dumper; #use Bio::SeqIO; #use Bio::AlignIO; #use DBI; ############################## # make log file ####################### my $directory; for (my $i=0;$i<=$#ARGV;$i+=2){ if($ARGV[$i] eq "-d"){ $directory=$ARGV[$i+1]; } } open (LOG,">>7blatAxtChain.log"); #open (STDERR,">8chainParse.err"); print LOG "\n".(localtime)."\n"; print LOG "chr_file:$directory\n"; if($directory eq ""){ print "Usage: perl 7blatAxtChain.pl -d ortho_dir"; exit(0); } ######################## # grep the chr file from hg18 fold ####################### opendir(DIR,$directory); # `mkdir chain`; #`chainMergeSort $directory/*.chain | chainSplit chain stdin`; my @files_chr = grep{ /\.chain$/ && -f} map {"$directory/$_"} readdir(DIR); closedir(DIR); #`mkdir data/hg18/temp`; #`mkdir data/hg18/temp_orth`; #`mkdir data/hg18/temp_orth_nib`; #`mkdir data/hg18/axt1`; #`mkdir data/hg18/chain1`; for my $file_chr(@files_chr){ $file_chr =~ m/(\S+)\/(\S+)\.chain$/; my $query_chr = "$1"; my $hit_chr = "$2"; my $chain_name ="$1"."_"."$2"; my $net_name = "$1"."_"."$2"."_"."net"; # `mkdir $chain_name`; # `mkdir $net_name`; print "$chain_name\n"; `~/bin/i386/chainMergeSort $file_chr | ~/bin/i386/chainSplit $chain_name stdin`; ############################ # read the file ######################### opendir(DIR_chain,$chain_name); my @file_chain = grep{ /\.chain$/ && -f } map {"$chain_name/$_"} readdir(DIR_chain); closedir(DIR_chain); for my $file_chain(@file_chain){ print "$file_chain\n"; $file_chain =~ m/\/(\S+)\.chain$/; my $temp = $1; print "$temp\n"; my $name_query = "$1"."_query.net"; my $name_hit = "$1"."_hit.net"; my $net_query = "$net_name/$name_query"; my $net_hit = "$net_name/$name_hit"; my ($query_file,$target_file) = chr_size($net_name,$temp,$file_chain); `~/bin/i386/chainNet $file_chain $query_file $target_file $net_query $net_hit`; } } ########################### # read the size of chr ######################## sub chr_size { my ($net,$temp1,$file) = (@_); open (INFILE,"<$file") || die "Fix the file\n"; print "$file\n"; print "enter\n"; my $current_target=""; my $current_query=""; my $query_size = "$net"."/$temp1"."_"."query.size"; my $target_size= "$net"."/$temp1"."_"."target.size"; open(OUTquery,">$query_size"); open(OUTtarget,">$target_size"); while(){ my $line = $_; chomp($line); if($line =~ /^chain/){ my @line_info = split(/\s+/,"$line"); my $current_target=$line_info[2]; my @info = split(/_/,"$current_target"); my $len = $info[$#info]; print OUTtarget "$current_target\t","$len\n"; print "$current_target\t","$len\n"; my $current_query = $line_info[7]; my @info1 = split(/_/,"$current_query"); my $len1 = $info1[$#info1]-1; print OUTquery "$current_query\t","$len1\n"; print "$current_query\t","$len1\n"; } } return("$query_size","$target_size"); } exit(0);