### Re^2: Increasing the efficiency of a viral clonal expansion model

 on Jul 06, 2011 at 19:21 UTC ( #913058=note: print w/replies, xml ) Need Help??

So you mean change it to this-->
```foreach my \$nucleotide(@nucleotide_array)
{
chomp \$nucleotide;

my(\$T,\$G,\$C,\$A);
#These mutations rates reflect 10^-5
if (\$nucleotide eq 'A'){
# \$T=.1;\$G=.2;\$C=.3;\$A=.7;
my \$score = (int rand(100000))/1
+00000;
if( \$score>=00000 && \$score<=.00
+033){ \$nucleotide='T';}
if( \$score>=.000334 && \$score<=.
+00066){ \$nucleotide='G';}
if( \$score>=.00067 && \$score<=.0
+0099){ \$nucleotide='C';}
# if( \$score>=.300 && \$score<=1.0
+0){  Do NOTHING      } }
}
elsif (\$nucleotide eq 'T'){
# \$A=.1;\$G=.2;\$C=.3;\$T=.7;
my \$score = (int rand(100000))/1
+00000;
if( \$score>=00000 && \$score<=.00
+0333){ \$nucleotide='A';}
if( \$score>=.00034 && \$score<=.0
+0066){ \$nucleotide='G';}
if( \$score>=.00067 && \$score<=.0
+0099){ \$nucleotide='C';}
#if( \$score>=.300 && \$score<=1.0
+0){  DO NOTHING      } }
}
elsif (\$nucleotide eq 'C'){
# \$T=.1;\$G=.2;\$A=.3;\$C=.7;
my \$score = (int rand(100000))/1
+00000;
if( \$score>=00000 && \$score<=.00
+033){ \$nucleotide='T';}
if( \$score>=.00034 && \$score<=.0
+0066){ \$nucleotide='G';}
if( \$score>=.00067 && \$score<=.0
+0099){ \$nucleotide='A';}
#if( \$score>=.300 && \$score<=1.0
+0){  #No mutation}
}
elsif (\$nucleotide eq 'G'){
# \$T=.1;\$A=.2;\$C=.3;\$G=.7;
my \$score = (int rand(100000))/1
+00000;
if( \$score>=00000 && \$score<=.00
+033){ \$nucleotide='T';}
if( \$score>=.00034 && \$score<=.0
+0066){ \$nucleotide='A';}
if( \$score>=.00067 && \$score<=.0
+0099){ \$nucleotide='C';}
#if( \$score>=.300 && \$score<=1.0
+0){  #No mutation}
}
\$new_string= \$new_string . \$nucleotide;

Replies are listed 'Best First'.
Re^3: Increasing the efficiency of a viral clonal expansion model
by BrowserUk (Pope) on Jul 06, 2011 at 19:27 UTC

Why are you chomping individual characters?

```            my @nucleotide_array = split //, \$seq_string;
foreach my \$nucleotide ( @nucleotide_array ) {
chomp \$nucleotide;

It may do no harm to the algorithmm, but calling a function millions of times to do nothing is just silly. Especially when you are concerned with performance.

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
Yeah I suppose you're right. I just type it by habit. Good point!

How much memory does the code you posted in the root post use when run with that seed sequence and 120 iterations? And how long does it take to run?

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
Re^3: Increasing the efficiency of a viral clonal expansion model
by Anonymous Monk on Jul 06, 2011 at 20:14 UTC

Yes, that is what I mean. Consider this benchmark

And the results

For the length of string in your program (1702) using assignment (SplitAssign ) is faster than using regex (SplitRegex)

Create A New User
Node Status?
node history
Node Type: note [id://913058]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2017-11-17 23:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
In order to be able to say "I know Perl", you must have:

Results (276 votes). Check out past polls.

Notices?