Added averageDouble function. How can we write a generic average function?!

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@136 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
depristo 2009-03-22 19:41:30 +00:00
parent cf407168cf
commit 4888df97c7
1 changed files with 22 additions and 6 deletions

View File

@ -2,8 +2,7 @@ package org.broadinstitute.sting.utils;
import net.sf.samtools.SAMRecord;
import net.sf.samtools.SAMSequenceRecord;
import edu.mit.broad.picard.reference.ReferenceSequenceFileFactory;
import edu.mit.broad.picard.reference.ReferenceSequence;
import net.sf.samtools.SAMSequenceDictionary;
import edu.mit.broad.picard.reference.ReferenceSequenceFile;
import java.util.*;
@ -197,19 +196,36 @@ public class Utils {
return (1.0 * sum) / i;
}
public static double average(List<Long> vals) {
return average(vals, vals.size());
public static double averageDouble(List<Double> vals, int maxI) {
double sum = 0.0;
int i = 0;
for ( double x : vals ) {
if ( i > maxI )
break;
sum += x;
i++;
}
return (1.0 * sum) / i;
}
public static double average(List<Long> vals) { return average(vals, vals.size()); }
public static double averageDouble(List<Double> vals) { return averageDouble(vals, vals.size()); }
public static boolean setupRefContigOrdering(final ReferenceSequenceFile refFile) {
List<SAMSequenceRecord> refContigs = refFile.getSequenceDictionary().getSequences();
final SAMSequenceDictionary seqDict = refFile.getSequenceDictionary();
if ( seqDict == null ) // we couldn't load the reference dictionary
return false;
List<SAMSequenceRecord> refContigs = seqDict.getSequences();
HashMap<String, Integer> refContigOrdering = new HashMap<String, Integer>();
if ( refContigs != null ) {
int i = 0;
System.out.printf("Prepared reference sequence contig dictionary%n order ->");
for ( SAMSequenceRecord contig : refContigs ) {
System.out.printf(" %s", contig.getSequenceName());
System.out.printf(" %s (%d bp)", contig.getSequenceName(), contig.getSequenceLength());
refContigOrdering.put(contig.getSequenceName(), i);
i++;
}