annotate join_nucmer/join_nucmer.pl @ 1:f8fb4135630a draft default tip

Uploaded
author elixir-it
date Tue, 27 Oct 2020 14:43:56 +0000
parents c68401961b4b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
1 @genomes=();
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
2 $ofile=shift;
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
3 open(OUT,">$ofile");
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
4 foreach $f (@ARGV)
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
5 {
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
6 open(IN,$f);
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
7 %ldata=();
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
8 $genome="";
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
9 while(<IN>)
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
10 {
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
11 chomp();
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
12 ($pos,$b1,$b2,$gen)=(split(/\s+/))[1,2,3,-1];
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
13 next unless $b1=~/[ACTG]/ && $b2=~/[ACTG]/;
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
14 $ldata{$pos}=[$b1,$b2];
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
15 if ($genome eq "")
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
16 {
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
17 $genome=$gen;
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
18 push(@genomes,$genome);
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
19 }
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
20 }
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
21 $prev_pos=0;
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
22 $prev_ref="na";
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
23 $prev_alt="na";
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
24 foreach $pos (sort{$a<=>$b} keys %ldata)
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
25 {
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
26 $dist=$pos-$prev_pos;
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
27 if ($dist>1)
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
28 {
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
29 $pos_append=$prev_pos-length($prev_alt)+1;
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
30 $dat_final{"$pos_append\_$prev_ref|$prev_alt"}{$genome}=1 unless $prev_ref eq "na";
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
31 $prev_ref=$ldata{$pos}[0];
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
32 $prev_alt=$ldata{$pos}[1];
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
33 }else{
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
34 $prev_ref.=$ldata{$pos}[0];
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
35 $prev_alt.=$ldata{$pos}[1];
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
36 }
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
37 $prev_pos=$pos;
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
38 }
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
39 $pos_append=$prev_pos-length($prev_alt)+1;
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
40 $dat_final{"$pos_append\_$prev_ref|$prev_alt"}{$genome}=1 if $prev_ref ne "na";
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
41
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
42 }
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
43
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
44 print OUT " @genomes\n";
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
45 foreach $pos (sort{$a<=>$b} keys %dat_final)
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
46 {
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
47 $line="$pos ";
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
48 foreach $g (@genomes)
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
49 {
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
50 $val=$dat_final{$pos}{$g} ? 1 : 0;
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
51 $line.="$val ";
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
52 }
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
53 chop($line);
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
54 print OUT "$line\n";
c68401961b4b Uploaded
elixir-it
parents:
diff changeset
55 }