[med-svn] [beagle] 01/02: Imported Upstream version 4.1~170121-6cc+dfsg

Dylan Aïssi bob.dybian-guest at moszumanska.debian.org
Tue Feb 7 21:58:02 UTC 2017


This is an automated email from the git hooks/post-receive script.

bob.dybian-guest pushed a commit to branch master
in repository beagle.

commit 1f3da147909be8f61b3a2df9880d50ed2b3726e2
Author: Dylan Aïssi <bob.dybian at gmail.com>
Date:   Tue Feb 7 22:57:07 2017 +0100

    Imported Upstream version 4.1~170121-6cc+dfsg
---
 ibd/HaploidIbd.java     | 31 +++++++++++++++++++++++--------
 ibd/IbsHapSegments.java | 11 +++++------
 main/Main.java          |  6 +++---
 main/MainHelper.java    | 20 ++++++++++----------
 main/Par.java           | 13 ++++++++++++-
 main/WindowWriter.java  |  8 ++++----
 vcf/VcfWindow.java      |  3 +--
 7 files changed, 58 insertions(+), 34 deletions(-)

diff --git a/ibd/HaploidIbd.java b/ibd/HaploidIbd.java
index e4575e2..06f606b 100644
--- a/ibd/HaploidIbd.java
+++ b/ibd/HaploidIbd.java
@@ -34,6 +34,7 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
+import main.GeneticMap;
 import vcf.GL;
 
 /**
@@ -52,32 +53,46 @@ import vcf.GL;
  */
 public final class HaploidIbd {
 
+    private final GeneticMap genMap;
     private final int ibdTrim;
     private final float minIbdLod;
-    private final float minIbsLength;   // positions from Dag.posArray()
-    private final float minFreqLod;     // for shared haplotype
+    private final float minFreqLod;
+    private final float minCm;
 
     /**
      * Constructs a new {@code HaploidIbd} instance from the specified data.
+     * @param genMap the genetic map
      * @param ibdTrim the number of markers to trim from an IBS segment
      * when computing the IBD versus non-IBD likelihood ratio
      * @param minIbdLod the minimum IBD LOD score of reported IBD segments
+     * @param minCm the minimum cM length of reported IBD segments
      *
      * @throws IllegalArgumentException if {@code ibdTrim < 0 }
      * @throws IllegalArgumentException if
      * {@code ibdLod <= 0.0f || Float.isFinite(ibdLod) == false}
+     * @throws IllegalArgumentException if
+     * {@code minCm <= 0.0f || Float.isFinite(minCm) == false}
+     * @throws NullPointerException if {@code genMap == null}
      */
-    public HaploidIbd(int ibdTrim, float minIbdLod) {
+    public HaploidIbd(GeneticMap genMap, int ibdTrim, float minIbdLod,
+            float minCm) {
+        if (genMap==null) {
+            throw new IllegalArgumentException(GeneticMap.class.toString());
+        }
         if (ibdTrim < 0) {
-            throw new IllegalArgumentException("trim: " + ibdTrim);
+            throw new IllegalArgumentException(String.valueOf(ibdTrim));
         }
         if (minIbdLod <= 0.0 || Float.isFinite(minIbdLod) == false) {
-            throw new IllegalArgumentException("minIbdlod: " + minIbdLod);
+            throw new IllegalArgumentException(String.valueOf(minIbdLod));
+        }
+        if (minCm <= 0.0 || Float.isFinite(minCm) == false) {
+            throw new IllegalArgumentException(String.valueOf(minCm));
         }
+        this.genMap = genMap;
         this.ibdTrim = ibdTrim;
         this.minIbdLod = minIbdLod;
-        this.minIbsLength = 0.8f*minIbdLod;
         this.minFreqLod = minIbdLod;
+        this.minCm = minCm;
     }
 
     /**
@@ -105,8 +120,8 @@ public final class HaploidIbd {
     public Map<IntPair, List<IbdSegment>> run(GL gl, Dag dag,
             SampleHapPairs haps, final int nThreads) {
         checkParameters(gl, dag, haps);
-        double[] pos = dag.posArray();
-        IbsHapSegments ibsSegments = new IbsHapSegments(haps, pos, minIbsLength);
+        double[] pos = genMap.genPos(dag.markers());
+        IbsHapSegments ibsSegments = new IbsHapSegments(haps, pos, minCm);
         ConcurrentMap<IntPair, List<IbdSegment>> ibdMap
                 = new ConcurrentHashMap<>();
 
diff --git a/ibd/IbsHapSegments.java b/ibd/IbsHapSegments.java
index 8579264..234b37b 100644
--- a/ibd/IbsHapSegments.java
+++ b/ibd/IbsHapSegments.java
@@ -64,9 +64,8 @@ public final class IbsHapSegments {
      *
      * @throws IllegalArgumentException if
      * {@code haps.nMarkers() != pos.length}
-     * @throws IllegalArgumentException if {@code pos[0] < 0}, or if
-     * {@code pos[j] < pos[j-1]} for any {@code j} satisfing
-     * {@code (0 < j && j < pos.length)}
+     * @throws IllegalArgumentException if {@code pos[j] < pos[j-1]}
+     * for any {@code j} satisfing {@code (0 < j && j < pos.length)}
      * @throws IllegalArgumentException if
      * {@code (Double.isNaN(pos[j])==true || Double.isInfinite(pos[j]) == true)}
      * for any {@code j} satisfying {@code  (0 <= j && j < pos.length)}
@@ -110,12 +109,12 @@ public final class IbsHapSegments {
         if (haps.nMarkers()!= pos.length) {
             throw new IllegalArgumentException("haps.nMarkers()!= pos.length");
         }
-        if (pos[0]<0 || Double.isNaN(pos[0]) || Double.isInfinite(pos[0]) ) {
-            throw new IllegalArgumentException("pos=" + pos[0]);
+        if (Double.isNaN(pos[0]) || Double.isInfinite(pos[0]) ) {
+            throw new IllegalArgumentException(String.valueOf(pos[0]));
         }
         for (int j=1; j<pos.length; ++j) {
             if (Double.isNaN(pos[j]) || Double.isInfinite(pos[j]) ) {
-                throw new IllegalArgumentException("pos=" + pos[j]);
+                throw new IllegalArgumentException(String.valueOf(pos[j]));
             }
             if (pos[j] < pos[j-1]) {
                 String s = "positions are not non-decreasing";
diff --git a/main/Main.java b/main/Main.java
index 30c0eb3..64f7d71 100644
--- a/main/Main.java
+++ b/main/Main.java
@@ -65,8 +65,8 @@ public class Main {
     /**
      * The program name and version.
      */
-    public static final String program = "beagle.27Jul16.86a.jar (version 4.1)";
-    public static final String command = "java -jar beagle.27Jul16.86a.jar";
+    public static final String program = "beagle.21Jan17.6cc.jar (version 4.1)";
+    public static final String command = "java -jar beagle.21Jan17.6cc.jar";
 
     /**
      * The copyright string.
@@ -78,7 +78,7 @@ public class Main {
      */
     public static final String shortHelp = Main.program
             + Const.nl + Main.copyright
-            + Const.nl + "Enter \"java -jar beagle.27Jul16.86a.jar\" for a "
+            + Const.nl + "Enter \"java -jar beagle.21Jan17.6cc.jar\" for a "
             + "summary of command line " + "arguments.";
 
     private final Par par;
diff --git a/main/MainHelper.java b/main/MainHelper.java
index dd68eb4..b1ace1e 100644
--- a/main/MainHelper.java
+++ b/main/MainHelper.java
@@ -58,15 +58,20 @@ public class MainHelper {
     /**
      * Constructs a new {@code MainHelper} instance.
      * @param par the command line parameters
-     * @param genMap the genetic map
+     * @param genMap the genetic map or {@code null} if no genetic map
+     * was specified
      * @param runStats the class for collecting and printing run-time statistics
      * @throws NullPointerException
-     * if {@code (par == null || genMap == null || runStarts == null)}
+     * if {@code (par == null || runStarts == null)}
      */
     MainHelper(Par par, GeneticMap genMap, RunStats runStats) {
         if (runStats==null) {
             throw new NullPointerException("runStats==null");
         }
+        if (genMap==null) {
+            double scaleFactor = 1e-6;
+            genMap = new PositionMap(scaleFactor);
+        }
         this.par = par;
         this.hapSampler = new HapPairSampler(par, runStats);
         this.recombSampler = new RecombHapPairSampler(par, runStats);
@@ -188,7 +193,8 @@ public class MainHelper {
             float scale = par.adjustedIbdScale(nSamples);
 
             Dag dag = ibdDag(cd, targetHapPairs, scale);
-            HaploidIbd hapIbd = new HaploidIbd(par.ibdtrim(), par.ibdlod());
+            HaploidIbd hapIbd = new HaploidIbd(genMap, par.ibdtrim(),
+                    par.ibdlod(), par.ibdcm());
             GL ibdGL = new NoPhaseGL(cd.targetGL());
 
             Map<IntPair, List<IbdSegment>> ibdMap =
@@ -244,14 +250,8 @@ public class MainHelper {
             return new SampleHapPairAlleleProbs(shp);
         }
         long t0 = System.nanoTime();
-        GeneticMap imputationMap = genMap;
-        if (par.map()==null) {
-            double scaleFactor = 1e-6;
-            imputationMap = new PositionMap(scaleFactor);
-        }
-
         LiAndStephensHapSampler recombHapSampler =
-                new LiAndStephensHapSampler(par, imputationMap);
+                new LiAndStephensHapSampler(par, genMap);
 
         BasicAlleleProbs alProbs = recombHapSampler.sample(cd, shp);
         runStats.imputationNanos(System.nanoTime() - t0);
diff --git a/main/Par.java b/main/Par.java
index bd72cef..eb0abc4 100644
--- a/main/Par.java
+++ b/main/Par.java
@@ -66,6 +66,7 @@ public final class Par {
     // ibd parameters
     private final boolean ibd;
     private final float ibdlod;
+    private final float ibdcm;
     private final float ibdscale;
     private final int ibdtrim;
 
@@ -137,6 +138,7 @@ public final class Par {
         // ibd parameters
         ibd = Validate.booleanArg("ibd", argsMap, false, false);
         ibdlod = Validate.floatArg("ibdlod", argsMap, false, 3.0f, FMIN, FMAX);
+        ibdcm = Validate.floatArg("ibdcm", argsMap, false, 1.5f, FMIN, FMAX);
         ibdscale = Validate.floatArg("ibdscale", argsMap, false, 0.0f, 0.0f, FMAX);
         ibdtrim = Validate.intArg("ibdtrim", argsMap, false, 40, 0, IMAX);
 
@@ -199,7 +201,8 @@ public final class Par {
 
                 + "IBD parameters ..." + nl
                 + "  ibd=<perform IBD detection (true/false)>           (default=false)" + nl
-                + "  ibdlod=<min LOD score for reporting IBD>           (default=3.0)" + nl
+                + "  ibdlod=<min LOD score of reported IBD segments>    (default=3.0)" + nl
+                + "  ibdcm=<min cM length of reported IBD segments>     (default=1.5)" + nl
                 + "  ibdscale=<model scale factor for Refined IBD>      (default: data-dependent)" + nl
                 + "  ibdtrim=<markers at each segment end>              (default=40)" + nl;
     }
@@ -473,6 +476,14 @@ public final class Par {
     }
 
     /**
+     * Returns the ibdcm parameter.
+     * @return the ibdcm parameter
+     */
+    public float ibdcm() {
+        return ibdcm;
+    }
+
+    /**
      * Returns the ibdscale parameter.
      * @return the ibdscale parameter
      */
diff --git a/main/WindowWriter.java b/main/WindowWriter.java
index 2a7d6a8..1edf341 100644
--- a/main/WindowWriter.java
+++ b/main/WindowWriter.java
@@ -85,8 +85,8 @@ public class WindowWriter implements Closeable {
         this.samples = samples;
         this.outPrefix = outPrefix;
         this.vcfOutFile = new File(outPrefix + ".vcf.gz");
-        this.ibdOutFile = new File(outPrefix + ".ibd");
-        this.hbdOutFile = new File(outPrefix + ".hbd");
+        this.ibdOutFile = new File(outPrefix + ".ibd.gz");
+        this.hbdOutFile = new File(outPrefix + ".hbd.gz");
 
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         try (PrintWriter vcfOut=new PrintWriter(
@@ -294,8 +294,8 @@ public class WindowWriter implements Closeable {
             int nextOverlap, int nextSplice, int nMarkers) {
         Map<IntPair, IbdSegment> lastBuffer = new HashMap<>(ibdBuffer);
         ibdBuffer.clear();
-        try (PrintWriter ibdOut = FileUtil.printWriter(ibdOutFile, appendIbd);
-               PrintWriter hbdOut = FileUtil.printWriter(hbdOutFile, appendIbd)) {
+        try (PrintWriter ibdOut = FileUtil.bgzipPrintWriter(ibdOutFile, appendIbd);
+               PrintWriter hbdOut = FileUtil.bgzipPrintWriter(hbdOutFile, appendIbd)) {
             Iterator<IntPair> keyIt = ibd.keySet().iterator();
             while (keyIt.hasNext()) {
                 IntPair key = keyIt.next();
diff --git a/vcf/VcfWindow.java b/vcf/VcfWindow.java
index 7f61c7e..3f8b155 100644
--- a/vcf/VcfWindow.java
+++ b/vcf/VcfWindow.java
@@ -24,7 +24,6 @@ import java.io.Closeable;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
-import main.GeneticMap;
 
 /**
  * <p>Class {@code VcfWindow} represents a sliding window of VCF records.
@@ -51,7 +50,7 @@ public class VcfWindow implements Closeable {
      */
     public VcfWindow(SampleFileIt<? extends VcfEmission> it) {
         if (it.hasNext()==false) {
-            throw new IllegalArgumentException("it.hasNext()==false");
+            throw new IllegalArgumentException("No VCF records after filtering");
         }
         this.it = it;
         this.overlap = 0;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/beagle.git



More information about the debian-med-commit mailing list