Mercurial > repos > elixir-it > corgat_join_nucmer
view join_nucmer/join_nucmer.pl @ 0:c68401961b4b draft
Uploaded
author | elixir-it |
---|---|
date | Thu, 23 Jul 2020 12:54:02 +0000 |
parents | |
children |
line wrap: on
line source
@genomes=(); $ofile=shift; open(OUT,">$ofile"); foreach $f (@ARGV) { open(IN,$f); %ldata=(); $genome=""; while(<IN>) { chomp(); ($pos,$b1,$b2,$gen)=(split(/\s+/))[1,2,3,-1]; next unless $b1=~/[ACTG]/ && $b2=~/[ACTG]/; $ldata{$pos}=[$b1,$b2]; if ($genome eq "") { $genome=$gen; push(@genomes,$genome); } } $prev_pos=0; $prev_ref="na"; $prev_alt="na"; foreach $pos (sort{$a<=>$b} keys %ldata) { $dist=$pos-$prev_pos; if ($dist>1) { $pos_append=$prev_pos-length($prev_alt)+1; $dat_final{"$pos_append\_$prev_ref|$prev_alt"}{$genome}=1 unless $prev_ref eq "na"; $prev_ref=$ldata{$pos}[0]; $prev_alt=$ldata{$pos}[1]; }else{ $prev_ref.=$ldata{$pos}[0]; $prev_alt.=$ldata{$pos}[1]; } $prev_pos=$pos; } $pos_append=$prev_pos-length($prev_alt)+1; $dat_final{"$pos_append\_$prev_ref|$prev_alt"}{$genome}=1 if $prev_ref ne "na"; } print OUT " @genomes\n"; foreach $pos (sort{$a<=>$b} keys %dat_final) { $line="$pos "; foreach $g (@genomes) { $val=$dat_final{$pos}{$g} ? 1 : 0; $line.="$val "; } chop($line); print OUT "$line\n"; }