From 570186fa4224068e60b505f914b514d950c891df Mon Sep 17 00:00:00 2001 From: asivache Date: Wed, 2 Mar 2011 00:35:23 +0000 Subject: [PATCH] Added (deep) clone() and merge() to the RunningAverage utility class git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@5350 348d0f76-0448-11de-a6fe-93d51630548a --- .../broadinstitute/sting/utils/MathUtils.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/java/src/org/broadinstitute/sting/utils/MathUtils.java b/java/src/org/broadinstitute/sting/utils/MathUtils.java index 582ea4360..7deee1d75 100755 --- a/java/src/org/broadinstitute/sting/utils/MathUtils.java +++ b/java/src/org/broadinstitute/sting/utils/MathUtils.java @@ -814,6 +814,22 @@ public class MathUtils { public double stddev() { return Math.sqrt(s/(obs_count - 1)); } public double var() { return s/(obs_count - 1); } public long observationCount() { return obs_count; } + + public RunningAverage clone() { + RunningAverage ra = new RunningAverage(); + ra.mean = this.mean; + ra.s = this.s; + ra.obs_count = this.obs_count; + return ra; + } + + public void merge(RunningAverage other) { + if ( this.obs_count > 0 || other.obs_count > 0 ) { // if we have any observations at all + this.mean = ( this.mean * this.obs_count + other.mean * other.obs_count ) / ( this.obs_count + other.obs_count ); + this.s += other.s; + } + this.obs_count += other.obs_count; + } } //