Hi!
I'd like to ask for help because I'm trying to deduce the relative positions in an ungapped sequence given the positions in a gapped sequence (from a multiple sequence alignment).
In order to simplify my task I substituted aminoacids with capital "A"s and gaps with "0"s.
I'm trying to do this using Perl, but my code isn't behaving correctly (and I can't figure out why).
So, here's my issue. I have to deduce positions in a "simple string" given positions in a "complete string".
Here's a minimal exemple of my input file:
Here's my code:
And here's my expected output:
In the provided exemple, I have to say that the 4th character (which is the 3rd "A") in the complete string(cs) corresponds to the the 3rd character in the simple string(ss), and so on...
Could you please help me formatting/reviewing my code?
Thanks in advance for your precious help!!
EDIT
Non-coding help is also greatly accepted! ie: how would you proceed if you had to do this job?
I'd like to ask for help because I'm trying to deduce the relative positions in an ungapped sequence given the positions in a gapped sequence (from a multiple sequence alignment).
In order to simplify my task I substituted aminoacids with capital "A"s and gaps with "0"s.
I'm trying to do this using Perl, but my code isn't behaving correctly (and I can't figure out why).
So, here's my issue. I have to deduce positions in a "simple string" given positions in a "complete string".
Here's a minimal exemple of my input file:
Code:
#name complete(cs) len(cs) simple(ss) len(ss) pos(cs) NAME1 A0AAA000AAA00A 14 AAAAAAAA 8 4,6 NAME2 AAAA0AA00000A 13 AAAAAAA 7 7
Code:
$ perl -anle ' print "$_ position(cs)" and next if /^#/; printf "%s",$_; for $pos_ss (split ",",$F[5]) { $char = substr($F[1],$pos_ss-1,1); @cs = split //,$F[3]; @cs_idx = grep {$cs[$_] eq $char} 0..$#cs; push @res,++$cs_idx[$pos_ss-1]; } printf "%14s\n", join ",",@res; @res=(); ' file
Code:
NAME1 A0AAA000AAA00A 14 AAAAAAAA 8 4,9 3,5 NAME2 AAAA0AA00000A 13 AAAAAAA 7 7 6
Could you please help me formatting/reviewing my code?
Thanks in advance for your precious help!!
EDIT
Non-coding help is also greatly accepted! ie: how would you proceed if you had to do this job?