]> git.donarmstrong.com Git - biopieces.git/blobdiff - code_perl/Maasha/Calc.pm
renaming match.rb to matches.rb
[biopieces.git] / code_perl / Maasha / Calc.pm
index 131643437475778dc19ffbd04842350159c53203..6f83fd09d06dceb3faa2fece3bdc905b425b73a0 100644 (file)
@@ -65,10 +65,18 @@ sub commify
 
     # Insert comma in long numbers.
 
-    my ( $num,   # number reference to commify
+    my ( $num,   # number to commify
        ) = @_;
 
-    ${ $num } =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1,/g;
+    # Returns a string.
+
+    my ( $copy );
+
+    $copy = $num;
+
+    $copy =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1,/g;
+
+    return $copy;
 }
 
 
@@ -210,24 +218,24 @@ sub standard_deviation
 
     # Returns a float.
 
-    my ( $mean_num, $num, $div, $div_sum, $mean_div, $std_div );
+    my ( $mean_num, $num, $dev, $dev_sum, $mean_dev, $std_dev );
 
     $mean_num = mean( $numbers );
 
-    $div_sum  = 0;
+    $dev_sum  = 0;
 
     foreach $num ( @{ $numbers } )
     {
-        $div = ( $num - $mean_num ) ** 2;
+        $dev = ( $num - $mean_num ) ** 2;
     
-        $div_sum += $div;
+        $dev_sum += $dev;
     }
 
-    $mean_div = $div_sum / scalar @{ $numbers };
+    $mean_dev = $dev_sum / scalar @{ $numbers };
 
-    $std_div  = sqrt( abs( $mean_div ) );
+    $std_dev  = sqrt( $mean_dev );
 
-    return $std_div;
+    return $std_dev;
 }
 
 
@@ -378,6 +386,33 @@ sub log10
 }
 
 
+sub interpolate_linear
+{
+    # Martin A. Hansen, February 2010.
+
+    # Given two data points and an x value returns the
+    # interpolant (y).
+    #
+    # Formula for linear interpolation:
+    # http://en.wikipedia.org/wiki/Interpolation#Example
+
+    my ( $x1,
+         $y1,
+         $x2,
+         $y2,
+         $x
+       ) = @_;
+
+    # Returns a float
+
+    my ( $y );
+
+    $y = $y1 + ( $x - $x1 ) * ( ( $y2 - $y1 ) / ( $x2 - $x1 ) );
+
+    return $y;
+}
+
+
 sub overlap
 {
     # Martin A. Hansen, November 2003.