[med-svn] [Git][med-team/beagle][upstream] New upstream version 5.0-190703+dfsg
Dylan Aïssi
gitlab at salsa.debian.org
Thu Jul 4 06:48:59 BST 2019
Dylan Aïssi pushed to branch upstream at Debian Med / beagle
Commits:
a65a6809 by Dylan Aïssi at 2019-07-04T05:47:34Z
New upstream version 5.0-190703+dfsg
- - - - -
9 changed files:
- beagleutil/ChromIds.java
- main/Main.java
- vcf/AllData.java
- vcf/RestrictedVcfWindow.java
- vcf/TargetData.java
- vcf/VcfWriter.java
- − vcf/XBasicGT.java
- − vcf/XBasicGT1.java
- − vcf/XGT1.java
Changes:
=====================================
beagleutil/ChromIds.java
=====================================
@@ -18,10 +18,11 @@
*/
package beagleutil;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.CopyOnWriteArrayList;
/**
* <p>Class {@code ChromIds} is a singleton class that represents a
@@ -38,7 +39,7 @@ public final class ChromIds {
private final ThreadSafeIndexer<String> indexer;
private final ConcurrentMap<String, Integer> map;
- private volatile CopyOnWriteArrayList<String> ids;
+ private volatile List<String> ids;
private ChromIds() {
// private constructor to restrict instantiation.
@@ -46,7 +47,7 @@ public final class ChromIds {
this.indexer = new ThreadSafeIndexer<>(initCapacity);
this.map = new ConcurrentHashMap<>(initCapacity);
- this.ids = new CopyOnWriteArrayList<>(new String[0]);
+ this.ids = new ArrayList<>();
}
/**
@@ -149,9 +150,7 @@ public final class ChromIds {
*/
public String id(int index) {
if (index >= ids.size()) {
- for (int j=ids.size(), n=indexer.size(); j<n; ++j) {
- ids.add(indexer.item(j));
- }
+ ids = indexer.items();
}
return ids.get(index);
}
=====================================
main/Main.java
=====================================
@@ -68,8 +68,8 @@ public class Main {
* The program name and version.
*/
public static final String VERSION = "(version 5.0)";
- public static final String PROGRAM = "beagle.28Sep18.793.jar";
- public static final String COMMAND = "java -jar beagle.28Sep18.793.jar";
+ public static final String PROGRAM = "beagle.03Jul19.b33.jar";
+ public static final String COMMAND = "java -jar beagle.03Jul19.b33.jar";
/**
* The copyright string.
@@ -81,7 +81,7 @@ public class Main {
*/
public static final String SHORT_HELP = Main.PROGRAM + " " + VERSION
+ Const.nl + Main.COPYRIGHT
- + Const.nl + "Enter \"java -jar beagle.28Sep18.793.jar\" to "
+ + Const.nl + "Enter \"java -jar beagle.03Jul19.b33.jar\" to "
+ "list command line argument";
private final Par par;
=====================================
vcf/AllData.java
=====================================
@@ -130,8 +130,7 @@ public class AllData implements Data {
private static GT targGTWindow(Samples samples, GTRec[] targData,
Pedigree ped) {
- GT gt = new BasicGT(samples, targData);
- return gt.isGTData() ? new XBasicGT(gt, ped) : gt;
+ return new BasicGT(samples, targData);
}
@Override
@@ -214,8 +213,7 @@ public class AllData implements Data {
for (int j=0; j<refMarkerIndex.length; ++j) {
restricted[j] = vma[refMarkerIndex[j]];
}
- GT gt = new BasicGT(samples, restricted);
- return gt.isGTData() ? new XBasicGT(gt, ped) : gt;
+ return new BasicGT(samples, restricted);
}
private void setRefHaplotypes(RefGT refGT) {
=====================================
vcf/RestrictedVcfWindow.java
=====================================
@@ -98,10 +98,12 @@ public class RestrictedVcfWindow implements Closeable {
for (int j = fullOverlap, n=nextMarkers.nMarkers(); j<n; ++j) {
Marker m = nextMarkers.marker(j);
if (next!=null && next.marker().chromIndex()==m.chromIndex()) {
- while (next != null && next.marker().pos() < m.pos()) {
+ while (next != null && next.marker().chromIndex()==m.chromIndex()
+ && next.marker().pos()<m.pos()) {
next = it.hasNext() ? it.next() : null;
}
- while (next != null && next.marker().pos() == m.pos()
+ while (next != null && next.marker().chromIndex()==m.chromIndex()
+ && next.marker().pos()==m.pos()
&& next.marker().equals(m)==false) {
next = it.hasNext() ? it.next() : null;
}
=====================================
vcf/TargetData.java
=====================================
@@ -88,8 +88,7 @@ public class TargetData implements Data {
private static GT targGT(Samples samples, GTRec[] targData,
Pedigree ped) {
- GT gt = new BasicGT(samples, targData);
- return gt.isGTData() ? new XBasicGT(gt, ped) : gt;
+ return new BasicGT(samples, targData);
}
@Override
=====================================
vcf/VcfWriter.java
=====================================
@@ -48,7 +48,7 @@ public final class VcfWriter {
private static final String gtFormat = "##FORMAT=<ID=GT,Number=1,Type=String,"
+ "Description=\"Genotype\">";
private static final String dsFormat = "##FORMAT=<ID=DS,Number=A,Type=Float,"
- +"Description=\"estimated ALT dose [P(RA) + P(AA)]\">";
+ +"Description=\"estimated ALT dose [P(RA) + 2*P(AA)]\">";
private static final String ap1Format = "##FORMAT=<ID=AP1,Number=A,Type=Float,"
+"Description=\"estimated ALT dose on first haplotype\">";
private static final String ap2Format = "##FORMAT=<ID=AP2,Number=A,Type=Float,"
=====================================
vcf/XBasicGT.java deleted
=====================================
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2014-2016 Brian L. Browning
- *
- * This file is part of Beagle
- *
- * Beagle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Beagle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package vcf;
-
-import beagleutil.Samples;
-import blbutil.Const;
-import main.Pedigree;
-
-/**
- * <p>Class {@code XBasicGT} represents genotype and genotype emission
- * probabilities for a set of samples optimized by sample.
- * </p>
- * Instances of class {@code XBasicGTWindow} are immutable.
- *
- * @author Brian L. Browning {@code <browning at uw.edu>}
- */
-public final class XBasicGT implements GT {
-
- private final Samples samples;
- private final Markers markers;
- private final boolean isRefData;
- private final XBasicGT1[] gt1;
-
- /**
- * Constructs a {@code XBasicGT} instance from the specified data.
- *
- * @param gl the genotype likelihoods
- * @param ped the pedigrees
- *
- * @throws IllegalArgumentException if
- * {@code gl.samples().equals(ped.samples())==false}
- * @throws NullPointerException if {@code gl == null || ped == null}
- */
- public XBasicGT(GT gl, Pedigree ped) {
- if (gl.samples().equals(ped.samples())==false) {
- throw new IllegalArgumentException("inconsistent samples");
- }
- int nSamples = gl.nSamples();
- this.markers = gl.markers();
- this.samples = gl.samples();
- this.isRefData = gl.isPhased();
- this.gt1 = new XBasicGT1[nSamples];
- for (int s=0; s<nSamples; ++s) {
- int father = ped.father(s);
- int mother = ped.mother(s);
- gt1[s] = new XBasicGT1(gl, s, father, mother);
- }
- }
-
- @Override
- public boolean isPhased() {
- return isRefData;
- }
-
- @Override
- public boolean isGTData() {
- return true;
- }
-
- @Override
- public boolean isPhased(int sample) {
- return gt1[sample].isRefSample();
- }
-
- @Override
- public float gl(int marker, int sample, int allele1, int allele2) {
- return gt1[sample].gl(marker, allele1, allele2);
- }
-
- @Override
- public boolean isPhased(int marker, int sample) {
- return gt1[sample].isPhased(marker);
- }
-
- @Override
- public int allele1(int marker, int sample) {
- return gt1[sample].allele1(marker);
- }
-
- @Override
- public int allele2(int marker, int sample) {
- return gt1[sample].allele2(marker);
- }
-
- @Override
- public int allele(int marker, int hap) {
- int sample = hap>>1;
- if ((hap & 1) == 0) {
- return allele1(marker, sample);
- }
- else {
- return allele2(marker, sample);
- }
- }
-
- @Override
- public int nMarkers() {
- return markers.nMarkers();
- }
-
- @Override
- public Marker marker(int markerIndex) {
- return markers.marker(markerIndex);
- }
-
- @Override
- public Markers markers() {
- return markers;
- }
-
- @Override
- public int nHaps() {
- return 2*samples.nSamples();
- }
-
- @Override
- public int nSamples() {
- return samples.nSamples();
- }
-
- @Override
- public Samples samples() {
- return samples;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("[XBasicGTWindow: nMarkers=");
- sb.append(nMarkers());
- sb.append(" nSamples=");
- sb.append(nSamples());
- sb.append(Const.nl);
- for (int m=0, n=nMarkers(); m<n; ++m) {
- sb.append(markers.marker(m));
- sb.append(Const.nl);
- sb.append(Const.MISSING_DATA_CHAR); // QUAL
- sb.append(Const.tab);
- sb.append("PASS"); // FILTER
- sb.append(Const.tab);
- sb.append(Const.MISSING_DATA_CHAR); // INFO
- sb.append(Const.tab);
- sb.append("GT"); // FORMAT
- for (XGT1 s : gt1) {
- sb.append(Const.tab);
- sb.append(s.allele1(m));
- sb.append(s.isPhased(m) ? Const.phasedSep : Const.unphasedSep);
- sb.append(s.allele2(m));
- }
- }
- sb.append(Const.nl);
- sb.append(']');
- return sb.toString();
- }
-}
=====================================
vcf/XBasicGT1.java deleted
=====================================
@@ -1,269 +0,0 @@
-/*
- * Copyright (C) 2014-2016 Brian L. Browning
- *
- * This file is part of Beagle
- *
- * Beagle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Beagle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package vcf;
-
-import blbutil.Const;
-import java.util.BitSet;
-
-/**
- * <p>Class {@code XBasicGT1} represents genotype likelihoods for one sample.
- * </p>
- * <p>Instances of class {@code XBasicGT1} are immutable.
- * </p>
- *
- * @author Brian L. Browning {@code <browning at uw.edu>}
- */
-public final class XBasicGT1 implements XGT1 {
-
- private final int idIndex;
- private final Markers markers;
- private final BitSet missing1;
- private final BitSet missing2;
- private final BitSet allele1;
- private final BitSet allele2;
- private final BitSet isPhased;
- private final boolean isRefSample;
-
- /**
- * Constructs a {@code XBasicGL1} instance from the specified data.
- *
- * @param gl the genotype likelihoods
- * @param sample the sample index
- *
- * @throws IndexOutOfBoundsException if
- * {@code samples < 0 || sample >= gl.nSamples()}
- * @throws NullPointerException if {@code gl == null}
- */
- public XBasicGT1(GT gl, int sample) {
- this(gl, sample, -1, -1);
- }
-
- /**
- * Constructs a {@code XBasicGL1} instance from the specified data.
- *
- * @param gt the genotype data
- * @param sample the sample index
- * @param father the sample index of the sample's father, or -1 if the
- * father is not genotyped
- * @param mother the sample index of the sample's mother, or -1 if the
- * mother is not genotyped
- *
- * @throws IndexOutOfBoundsException if
- * {@code samples < 0 || sample >= gl.nSamples()}
- * @throws NullPointerException if {@code gl == null}
- */
- public XBasicGT1(GT gt, int sample, int father, int mother) {
- // NB: phase information in GL is ignored if parental data is used
- int nMarkers = gt.markers().nMarkers();
- int sumHapBits = gt.markers().sumHaplotypeBits();
- this.idIndex = gt.samples().idIndex(sample);
- this.markers = gt.markers();
- this.missing1 = new BitSet(nMarkers);
- this.missing2 = new BitSet(nMarkers);
- this.allele1 = new BitSet(sumHapBits);
- this.allele2 = new BitSet(sumHapBits);
- this.isPhased = new BitSet(nMarkers);
-// // Removing use of pedigree constraints to preserve regression
-// // after changing main.Par.ped() to return pedigree
-// if (father==-1 && mother==-1) {
-// this.isRefSample = copyGL(gl, sample);
-// }
-// else {
-// this.isRefSample = useConstraintAndGL(gl, sample, father, mother);
-// }
- this.isRefSample = copyGL(gt, sample);
- }
-
- private boolean copyGL(GT gl, int sample) {
- int nMarkers = markers.nMarkers();
- for (int m=0; m<nMarkers; ++m) {
- int a1 = gl.allele1(m, sample);
- int a2 = gl.allele2(m, sample);
- setBits(markers, m, a1, allele1, missing1);
- setBits(markers, m, a2, allele2, missing2);
- if (gl.isPhased(m, sample)) {
- isPhased.set(m);
- }
- }
- return gl.isPhased(sample);
- }
-
- private boolean useConstraintAndGL(GT gl, int sample, int father,
- int mother) {
- int nMarkers = markers.nMarkers();
- int phasedCnt = 0;
- for (int m=0; m<nMarkers; ++m) {
- int a1 = gl.allele1(m, sample);
- int a2 = gl.allele2(m, sample);
- int tr1 = transmittedAllele(gl, m, father);
- int tr2 = transmittedAllele(gl, m, mother);
- if ((tr1>=0 || tr2>=0) && isUnphasedConsistent(a1, a2, tr1, tr2)) {
- if (isPhasedConsistent(a1, a2, tr1, tr2)==false) {
- int tmp = a1;
- a1 = a2;
- a2 = tmp;
- }
- if (tr1 != -1) {
- a1 = tr1;
- }
- if (tr2 != -1) {
- a2 = tr2;
- }
- if (a1>=0 && a2>=0) {
- ++phasedCnt;
- isPhased.set(m);
- }
- }
- setBits(markers, m, a1, allele1, missing1);
- setBits(markers, m, a2, allele2, missing2);
- }
- return phasedCnt==nMarkers;
-}
-
- private static boolean isUnphasedConsistent(int a1, int a2, int b1, int b2) {
- return isPhasedConsistent(a1, a2, b1, b2)
- || isPhasedConsistent(a1, a2, b2, b1);
- }
-
- private static boolean isPhasedConsistent(int a1, int a2, int b1, int b2) {
- return (isConsistent(a1, b1) && isConsistent(a2, b2));
- }
-
- private static boolean isConsistent(int a1, int b1) {
- return (a1==-1 || b1==-1 || a1==b1);
- }
-
- private static int transmittedAllele(GT gl, int marker, int sample) {
- if (sample==-1) {
- return -1;
- }
- int a1 = gl.allele1(marker, sample);
- return a1>=0 && a1==gl.allele2(marker, sample) ? a1 : -1;
- }
-
- private static void setBits(Markers markers, int marker, int allele,
- BitSet alleles, BitSet missing) {
- if (allele == -1) {
- missing.set(marker);
- }
- else {
- int mask = 1;
- int start = markers.sumHaplotypeBits(marker);
- int end = markers.sumHaplotypeBits(marker+1);
- for (int i=start; i<end; ++i) {
- boolean b = (allele & mask)==mask;
- alleles.set(i, b);
- mask <<= 1;
- }
- }
- }
-
- private int allele(BitSet bitset, int marker) {
- int start = markers.sumHaplotypeBits(marker);
- int end = markers.sumHaplotypeBits(marker+1);
- if (end==(start+1)) {
- return bitset.get(start) ? 1 : 0;
- }
- int allele = 0;
- int mask = 1;
- for (int j=start; j<end; ++j) {
- if (bitset.get(j)) {
- allele += mask;
- }
- mask <<= 1;
- }
- return allele;
- }
-
- @Override
- public boolean isRefSample() {
- return isRefSample;
- }
-
- @Override
- public float gl(int marker, int a1, int a2) {
- if (a1 < 0 || a1 >= markers.marker(marker).nAlleles()) {
- throw new IndexOutOfBoundsException(String.valueOf(a1));
- }
- if (a2 < 0 || a2 >= markers.marker(marker).nAlleles()) {
- throw new IndexOutOfBoundsException(String.valueOf(a2));
- }
- int obsA1 = allele1(marker);
- int obsA2 = allele2(marker);
- boolean consistent = (obsA1==-1 || obsA1==a1) && (obsA2==-1 || obsA2==a2);
- if (consistent==false && isPhased.get(marker)==false) {
- consistent = (obsA1==-1 || obsA1==a2) && (obsA2==-1 || obsA2==a1);
- }
- return consistent ? 1.0f : 0.0f;
- }
-
- @Override
- public boolean isPhased(int marker) {
- return isPhased.get(marker);
- }
-
- @Override
- public int allele1(int marker) {
- return missing1.get(marker) ? -1 : allele(allele1, marker);
- }
-
- @Override
- public int allele2(int marker) {
- return missing2.get(marker) ? -1 : allele(allele2, marker);
- }
-
- @Override
- public int nMarkers() {
- return markers.nMarkers();
- }
-
- @Override
- public Marker marker(int markerIndex) {
- return markers.marker(markerIndex);
- }
-
- @Override
- public Markers markers() {
- return markers;
- }
-
- @Override
- public int idIndex() {
- return idIndex;
- }
-
- @Override
- public String toString() {
- int nMarkers = markers.nMarkers();
- StringBuilder sb = new StringBuilder();
- sb.append("[XBasicGL1: nMarkers=");
- sb.append(nMarkers);
- sb.append(Const.nl);
- for (int m=0; m<nMarkers; ++m) {
- sb.append(markers.marker(m));
- sb.append(Const.tab);
- sb.append(allele1(m));
- sb.append(isPhased(m) ? Const.phasedSep : Const.unphasedSep);
- sb.append(allele2(m));
- sb.append(Const.nl);
- }
- sb.append(']');
- return sb.toString();
- }
-}
=====================================
vcf/XGT1.java deleted
=====================================
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2014-2016 Brian L. Browning
- *
- * This file is part of Beagle
- *
- * Beagle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Beagle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package vcf;
-
-// Later consider relaxing mutability, and determine whether interface
-// can be replaced with implementing class
-
-/**
- * <p>Interface {@code XGT1} (Genotype Likelihoods) represents genotype
- * likelihoods for one sample.
- * </p>
- * <p>Instances of {@code XGT1} are required to be immutable.
- * </p>
- *
- * @author Brian L. Browning {@code <browning at uw.edu>}
- */
-public interface XGT1 {
-
- /**
- * Returns {@code true} if the observed data for each marker
- * includes a phased genotype that has no missing alleles,
- * and returns {@code false} otherwise.
- * @return {@code true} if the observed data for each marker
- * includes a phased genotype that has no missing alleles,
- * and {@code false} otherwise
- */
- boolean isRefSample();
-
- /**
- * Returns the probability of the observed data for the specified marker
- * if the specified pair of ordered alleles is the true ordered genotype.
- * @param marker the marker index
- * @param allele1 the first allele index
- * @param allele2 the second allele index
- * @return the probability of the observed data for the specified marker
- * and sample if the specified pair of ordered alleles is the true
- * ordered genotype
- *
- * @throws IndexOutOfBoundsException if
- * {@code marker < 0 || marker >= this.nMarkers()}
- * @throws IndexOutOfBoundsException if
- * {@code allele1 < 0 || allele1 >= this.marker(marker).nAlleles()}
- * @throws IndexOutOfBoundsException if
- * {@code allele2 < 0 || allele2 >= this.marker(marker).nAlleles()}
- */
- float gl(int marker, int allele1, int allele2);
-
- /**
- * Returns {@code true} if the observed data for the specified
- * marker includes a phased genotype, and returns {@code false} otherwise.
- * @param marker the marker index
- * @return {@code true} if the observed data for the specified
- * marker includes a phased genotype, and {@code false} otherwise
- *
- * @throws IndexOutOfBoundsException if
- * {@code marker < 0 || marker >= this.nMarkers()}
- */
- boolean isPhased(int marker);
-
- /**
- * Returns the first allele for the specified marker if the observed data
- * include a non-missing allele, and returns -1 otherwise. Alleles are
- * arbitrarily ordered if the genotype is unphased.
- * @param marker the marker index
- * @return the first allele for the specified marker if the observed data
- * include a non-missing allele, and -1 otherwise
- *
- * @throws IndexOutOfBoundsException if
- * {@code marker < 0 || marker >= this.nMarkers()}
- */
- int allele1(int marker);
-
- /**
- * Returns the second allele for the specified marker if the observed data
- * include a non-missing allele, and returns -1 otherwise. Alleles are
- * arbitrarily ordered if the genotype is unphased.
- * @param marker the marker index
- * @return the second allele for the specified marker if the observed data
- * include a non-missing allele, and -1 otherwise
- *
- * @throws IndexOutOfBoundsException if
- * {@code marker < 0 || marker >= this.nMarkers()}
- */
- int allele2(int marker);
-
- /**
- * Returns the number of markers.
- * @return the number of markers
- */
- int nMarkers();
-
- /**
- * Returns the specified marker.
- * @param marker the marker index
- * @return the specified marker
- * @throws IndexOutOfBoundsException if
- * {@code marker < 0 || marker >= this.nMarkers()}
- */
- Marker marker(int marker);
-
- /**
- * Returns the list of markers.
- * @return the list of markers
- */
- Markers markers();
-
- /**
- * Returns the sample identifier index.
- * @return the sample identifier index
- */
- int idIndex();
-
- /**
- * Returns a string representation of {@code this}. The exact
- * details of the representation are unspecified and subject to change.
- * @return a string representation of {@code this}
- */
- @Override
- String toString();
-}
View it on GitLab: https://salsa.debian.org/med-team/beagle/commit/a65a680954aae0dc8affc42a1072dae6cc093eb5
--
View it on GitLab: https://salsa.debian.org/med-team/beagle/commit/a65a680954aae0dc8affc42a1072dae6cc093eb5
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20190704/108713df/attachment-0001.html>
More information about the debian-med-commit
mailing list