Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^5: How to expand a string

by GrandFather (Saint)
on Nov 29, 2007 at 20:10 UTC ( [id://653969]=note: print w/replies, xml ) Need Help??


in reply to Re^4: How to expand a string
in thread How to expand a string

A somewhat general solution could look like:

use strict; use warnings; use Data::Dump::Streamer; my %replace = ( R => '{A,G}', S => '{C,G}', K => '{G,T}', ' ' => '_', ); my %seqs = ( seq1 => {org => "CAG GTR CAG CTG AAG SAG TCA GG"}, seq2 => {org => "GAK GTG CAG CTT CAG CAG TCR GG"} ); for my $seqKey (keys %seqs) { $seqs{$seqKey}{glob} = $seqs{$seqKey}{org}; $seqs{$seqKey}{glob} =~ s/$_/$replace{$_}/g for keys %replace; push @{$seqs{$seqKey}{expanded}}, map {y/_/ /; $_} glob $seqs{$seq +Key}{glob}; } Dump (\%seqs);

Prints:

$RO1 = 'seq1'; make_ro($RO1); $HASH1 = { expanded => [ 'CAG GTA CAG CTG AAG CAG TCA GG', 'CAG GTA CAG CTG AAG GAG TCA GG', 'CAG GTG CAG CTG AAG CAG TCA GG', 'CAG GTG CAG CTG AAG GAG TCA GG' ], glob => 'CAG_GT{A,G}_CAG_CTG_AAG_{C,G}AG_TCA_GG', org => 'CAG GTR CAG CTG AAG SAG TCA GG' }; $RO2 = 'seq2'; make_ro($RO2); $HASH2 = { expanded => [ 'GAG GTG CAG CTT CAG CAG TCA GG', 'GAG GTG CAG CTT CAG CAG TCG GG', 'GAT GTG CAG CTT CAG CAG TCA GG', 'GAT GTG CAG CTT CAG CAG TCG GG' ], glob => 'GA{G,T}_GTG_CAG_CTT_CAG_CAG_TC{A,G}_GG', org => 'GAK GTG CAG CTT CAG CAG TCR GG' };

Note that you well need Perl 5.6.0 or later for the glob to work correctly.


Perl is environmentally friendly - it saves trees

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://653969]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (4)
As of 2024-04-19 21:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found