Michael Robeson wrote:

Don't post MIME or HTML to the list. Plain text only.

> 
> I have two sets of data that have been stored in hashes. The first
> hash 
> has amino-acid (protein) sequence data. The second hash has the
> corresponding DNA sequence of those amino-acids:
> 
> 
> Hash 1
> key: value:
> cat   =   mfgdhf
> doq = mfg--f
> mouse =   mf-d-f
> 
> 
> Hash 2
> key: value:
> cat = agtcatgcacactgatcg
> dog = agtcatgcatcg
> mouse = agtcatcactcg
> 
> 
> And I need to insert gaps (missing or absent data) proportionally into
> the DNA sequence (Hash 2) so that the output is as follows:
> 
> 
> Hash 3
> key: value:
> cat = agtcatgcacactgatcg
> dog = agtcatgca------tcg
> mouse = agtca---tca---ctcg
> 
> 
> It doesn't look right here, but all the lines should end up being the
> same length with courier font. Basically, I am having trouble scanning
> though, say...  hash1{cat} and for every  dash found there being
> finally represented as  three dashes in hash2{cat}. Also, every
> amino-acid is represented by 3 DNA letters. This is why I need to move
> in increments of 3 and add in increments of 3 for my final data to
> appear as it does in Hash 3.
> 
> 
> Example of relationship:
> M     F         D        F          = amino-acid
> agt tca --- act --- tcg      = dna
> 
> 
> I have everything else set up I just need a few suggestions on how to
> do the above. Any help will be greatly appreciated.

Here's one approach:

    #!/usr/bin/perl

    use strict;

    while (<DATA>) {
        my ($key, $mask, $src) = split;
        my @mask = $mask =~ /./g;
        my @src = $src =~ /.../g;
        print "$key: ";
        print $_ eq '-' ? '---' : shift @src for @mask;
        print "\n";
    }

    __DATA__
    cat mfgdhf agtcatgcacactgatcg
    dog mfg--f agtcatgcatcg
    mouse mf-d-f agtcatcactcg

Outputs:

    cat: agtcatgcacactgatcg
    dog: agtcatgca------tcg
    mouse: agtcat---cac---tcg

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to