Skip to content
This repository was archived by the owner on Oct 29, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added lib/alpn-boot-7.1.3.v20150130.jar
Binary file not shown.
Binary file added lib/alpn-boot-8.1.3.v20150130.jar
Binary file not shown.
21 changes: 20 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@
<dependency>
<groupId>com.google.cloud.genomics</groupId>
<artifactId>google-genomics-utils</artifactId>
<version>v1beta2-0.37</version>
<version>v1beta2-0.38</version>
<exclusions>
<!-- Exclude an old version of guava which is being pulled
in by a transitive dependency google-api-client 1.19.0 -->
Expand Down Expand Up @@ -233,6 +233,24 @@
</plugins>
</build>
</profile>
<profile>
<id>java7profile</id>
<activation>
<jdk>[1.7, 1.8)</jdk>
</activation>
<properties>
<alpn.jar>${basedir}/lib/alpn-boot-7.1.3.v20150130.jar</alpn.jar>
</properties>
</profile>
<profile>
<id>java8profile</id>
<activation>
<jdk>[1.8, 1.9)</jdk>
</activation>
<properties>
<alpn.jar>${basedir}/lib/alpn-boot-8.1.3.v20150130.jar</alpn.jar>
</properties>
</profile>
</profiles>

<build>
Expand Down Expand Up @@ -304,6 +322,7 @@
<version>2.18.1</version>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
<argLine>-Xbootclasspath/p:${alpn.jar}</argLine>
</configuration>
<executions>
<execution>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@
import java.util.HashMap;
import java.util.Map;

import com.google.api.services.genomics.model.Call;
import com.google.api.services.genomics.model.Variant;
import com.google.cloud.dataflow.sdk.transforms.DoFn;
import com.google.cloud.dataflow.sdk.values.KV;
import com.google.cloud.genomics.dataflow.utils.CallFilters;
import com.google.cloud.genomics.dataflow.utils.PairGenerator;
import com.google.cloud.genomics.utils.VariantUtils;
import com.google.cloud.genomics.utils.grpc.VariantUtils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Maps;
import com.google.genomics.v1.Variant;
import com.google.genomics.v1.VariantCall;

/**
* For each pair of calls on any of the given variants, computes a score, a number between 0 and 1
Expand Down Expand Up @@ -55,14 +55,14 @@ public void processElement(ProcessContext context) {
Variant variant = context.element();
CallSimilarityCalculator callSimilarityCalculator =
callSimilarityCalculatorFactory.get(isReferenceMajor(variant));
for (KV<Call, Call> pair : PairGenerator.WITHOUT_REPLACEMENT.allPairs(
for (KV<VariantCall, VariantCall> pair : PairGenerator.WITHOUT_REPLACEMENT.allPairs(
getSamplesWithVariant(variant), VariantUtils.CALL_COMPARATOR)) {
accumulateCallSimilarity(callSimilarityCalculator, pair.getKey(), pair.getValue());
}
}

private void accumulateCallSimilarity(CallSimilarityCalculator callSimilarityCalculator,
Call call1, Call call2) {
VariantCall call1, VariantCall call2) {
KV<String, String> callPair = KV.of(call1.getCallSetName(), call2.getCallSetName());
KV<Double, Integer> callPairAccumulation = accumulator.get(callPair);
if (callPairAccumulation == null) {
Expand All @@ -79,15 +79,15 @@ public void finishBundle(Context context) {
output(context, accumulator);
}

static ImmutableList<Call> getSamplesWithVariant(Variant variant) {
static ImmutableList<VariantCall> getSamplesWithVariant(Variant variant) {
return CallFilters.getSamplesWithVariantOfMinGenotype(variant, 0);
}

static boolean isReferenceMajor(Variant variant) {
int referenceAlleles = 0;
int alternateAlleles = 0;
for (Call call : variant.getCalls()) {
for (Integer i : call.getGenotype()) {
for (VariantCall call : variant.getCallsList()) {
for (Integer i : call.getGenotypeList()) {
if (i == 0) {
++referenceAlleles;
} else if (i > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
*/
package com.google.cloud.genomics.dataflow.functions;

import com.google.api.services.genomics.model.Call;
import com.google.genomics.v1.VariantCall;

public interface CallSimilarityCalculator {

double similarity(Call call1, Call call2);
double similarity(VariantCall call1, VariantCall call2);

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import com.google.cloud.dataflow.sdk.values.PCollection;
import com.google.cloud.genomics.dataflow.readers.VariantReader;
import com.google.cloud.genomics.dataflow.utils.GenomicsDatasetOptions;
import com.google.cloud.genomics.utils.GenomicsFactory;
import com.google.cloud.genomics.utils.OfflineAuth;
import com.google.cloud.genomics.utils.ShardBoundary;
import com.google.cloud.genomics.utils.VariantUtils;
import com.google.common.base.Function;
Expand Down Expand Up @@ -71,7 +71,7 @@ public class JoinNonVariantSegmentsWithVariants {
* merged into the variants with which they overlap.
*/
public static PCollection<Variant> joinVariantsTransform(
PCollection<SearchVariantsRequest> input, GenomicsFactory.OfflineAuth auth) {
PCollection<SearchVariantsRequest> input, OfflineAuth auth) {
return joinVariants(input, auth, null);
}

Expand All @@ -87,7 +87,7 @@ public static PCollection<Variant> joinVariantsTransform(
* merged into the variants with which they overlap.
*/
public static PCollection<Variant> joinVariantsTransform(
PCollection<SearchVariantsRequest> input, GenomicsFactory.OfflineAuth auth, String fields) {
PCollection<SearchVariantsRequest> input, OfflineAuth auth, String fields) {
for (String field : REQUIRED_FIELDS) {
Preconditions
.checkArgument(
Expand All @@ -99,7 +99,7 @@ public static PCollection<Variant> joinVariantsTransform(
}

private static PCollection<Variant> joinVariants(PCollection<SearchVariantsRequest> input,
GenomicsFactory.OfflineAuth auth, String fields) {
OfflineAuth auth, String fields) {
return input
.apply(
ParDo.named(VariantReader.class.getSimpleName()).of(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/
package com.google.cloud.genomics.dataflow.functions;

import com.google.api.services.genomics.model.Call;
import com.google.genomics.v1.VariantCall;

/**
* See <a href="http://konradjkarczewski.files.wordpress.com/2012/02/identity-howto.pdf">this
Expand All @@ -27,15 +27,15 @@ public class SharedAllelesRatioCalculator implements CallSimilarityCalculator {
// TODO: Double check that the following is the right way of computing the IBS
// scores when the number of alleles is different than 2 and when the genotypes are unphased.
@Override
public double similarity(Call call1, Call call2) {
int minNumberOfGenotypes = Math.min(call1.getGenotype().size(), call2.getGenotype().size());
public double similarity(VariantCall call1, VariantCall call2) {
int minNumberOfGenotypes = Math.min(call1.getGenotypeCount(), call2.getGenotypeCount());
int numberOfSharedAlleles = 0;
for (int i = 0; i < minNumberOfGenotypes; ++i) {
if (call1.getGenotype().get(i) == call2.getGenotype().get(i)) {
if (call1.getGenotype(i) == call2.getGenotype(i)) {
++numberOfSharedAlleles;
}
}
int maxNumberOfGenotypes = Math.max(call1.getGenotype().size(), call2.getGenotype().size());
int maxNumberOfGenotypes = Math.max(call1.getGenotypeCount(), call2.getGenotypeCount());
return (double) numberOfSharedAlleles / maxNumberOfGenotypes;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
*/
package com.google.cloud.genomics.dataflow.functions;

import com.google.api.services.genomics.model.Call;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.genomics.v1.VariantCall;

/**
* Computes the similarity of two calls based on whether they share a minor allele or not.
Expand All @@ -30,8 +30,8 @@ public SharedMinorAllelesCalculator(boolean isReferenceMajor) {
this.isReferenceMajor = isReferenceMajor;
}

private boolean hasMinorAllele(Call call) {
return Iterables.any(call.getGenotype(), new Predicate<Integer>() {
private boolean hasMinorAllele(VariantCall call) {
return Iterables.any(call.getGenotypeList(), new Predicate<Integer>() {

@Override
public boolean apply(Integer genotype) {
Expand All @@ -46,7 +46,7 @@ public boolean apply(Integer genotype) {
}

@Override
public double similarity(Call call1, Call call2) {
public double similarity(VariantCall call1, VariantCall call2) {
if (call1.getCallSetName().equals(call2.getCallSetName())) {
return 1.0;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
import com.google.cloud.genomics.dataflow.utils.GenomicsDatasetOptions;
import com.google.cloud.genomics.dataflow.utils.GenomicsOptions;
import com.google.cloud.genomics.utils.GenomicsFactory;
import com.google.cloud.genomics.utils.OfflineAuth;
import com.google.cloud.genomics.utils.Paginator;
import com.google.cloud.genomics.utils.ShardBoundary;
import com.google.cloud.genomics.utils.ShardUtils;
Expand Down Expand Up @@ -87,11 +88,11 @@ public final class AnnotateVariants extends DoFn<SearchVariantsRequest, KV<Strin
private static final String VARIANT_FIELDS
= "nextPageToken,variants(id,referenceName,start,end,alternateBases,referenceBases)";

private final GenomicsFactory.OfflineAuth auth;
private final OfflineAuth auth;
private final List<String> callSetIds, transcriptSetIds, variantAnnotationSetIds;
private final Map<Range<Long>, String> refBaseCache;

public AnnotateVariants(GenomicsFactory.OfflineAuth auth,
public AnnotateVariants(OfflineAuth auth,
List<String> callSetIds, List<String> transcriptSetIds,
List<String> variantAnnotationSetIds) {
this.auth = auth;
Expand All @@ -104,7 +105,7 @@ public AnnotateVariants(GenomicsFactory.OfflineAuth auth,
@Override
public void processElement(
DoFn<SearchVariantsRequest, KV<String, VariantAnnotation>>.ProcessContext c) throws Exception {
Genomics genomics = auth.getGenomics(auth.getDefaultFactory());
Genomics genomics = GenomicsFactory.builder().build().fromOfflineAuth(auth);

SearchVariantsRequest request = c.element();
LOG.info("processing contig " + request);
Expand Down Expand Up @@ -258,8 +259,8 @@ public static void main(String[] args) throws Exception {
// Option validation is not yet automatic, we make an explicit call here.
GenomicsDatasetOptions.Methods.validateOptions(opts);

GenomicsFactory.OfflineAuth auth = GenomicsOptions.Methods.getGenomicsAuth(opts);
Genomics genomics = auth.getGenomics(auth.getDefaultFactory());
OfflineAuth auth = GenomicsOptions.Methods.getGenomicsAuth(opts);
Genomics genomics = GenomicsFactory.builder().build().fromOfflineAuth(auth);

List<String> callSetIds = ImmutableList.of();
if (!Strings.isNullOrEmpty(opts.getCallSetIds().trim())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
import com.google.cloud.genomics.utils.Contig;
import com.google.cloud.genomics.utils.GenomicsFactory;
import com.google.cloud.genomics.utils.GenomicsUtils;
import com.google.cloud.genomics.utils.OfflineAuth;
import com.google.cloud.genomics.utils.RetryPolicy;
import com.google.cloud.genomics.utils.ShardBoundary;
import com.google.cloud.genomics.utils.ShardUtils.SexChromosomeFilter;
Expand Down Expand Up @@ -76,7 +77,7 @@ public class CalculateCoverage {

private static CoverageOptions options;
private static Pipeline p;
private static GenomicsFactory.OfflineAuth auth;
private static OfflineAuth auth;

/**
* Options required to run this pipeline.
Expand Down Expand Up @@ -192,10 +193,10 @@ public static void main(String[] args) throws GeneralSecurityException, IOExcept

static class CheckMatchingReferenceSet extends DoFn<String, String> {
private final String referenceSetIdForAllReadGroupSets;
private final GenomicsFactory.OfflineAuth auth;
private final OfflineAuth auth;

public CheckMatchingReferenceSet(String referenceSetIdForAllReadGroupSets,
GenomicsFactory.OfflineAuth auth) {
OfflineAuth auth) {
this.referenceSetIdForAllReadGroupSets = referenceSetIdForAllReadGroupSets;
this.auth = auth;
}
Expand Down Expand Up @@ -396,11 +397,11 @@ static class CreateAnnotations extends
DoFn<KV<Position, Iterable<KV<PosRgsMq.MappingQuality, List<Double>>>>, Annotation> {

private final String asId;
private final GenomicsFactory.OfflineAuth auth;
private final OfflineAuth auth;
private final List<Annotation> currAnnotations;
private final boolean write;

public CreateAnnotations(String asId, GenomicsFactory.OfflineAuth auth, boolean write) {
public CreateAnnotations(String asId, OfflineAuth auth, boolean write) {
this.asId = asId;
this.auth = auth;
this.currAnnotations = Lists.newArrayList();
Expand Down Expand Up @@ -446,8 +447,8 @@ public void finishBundle(Context c) throws IOException, GeneralSecurityException
}

private void batchCreateAnnotations() throws IOException, GeneralSecurityException {
Genomics.Annotations.BatchCreate aRequest = auth.getGenomics(auth.getDefaultFactory())
.annotations().batchCreate(
Genomics genomics = GenomicsFactory.builder().build().fromOfflineAuth(auth);
Genomics.Annotations.BatchCreate aRequest = genomics.annotations().batchCreate(
new BatchCreateAnnotationsRequest().setAnnotations(currAnnotations));
RetryPolicy retryP = RetryPolicy.nAttempts(4);
retryP.execute(aRequest);
Expand Down Expand Up @@ -477,8 +478,8 @@ private static AnnotationSet createAnnotationSet(String referenceSetId)
}
as.setReferenceSetId(referenceSetId);
as.setType("GENERIC");
Genomics.AnnotationSets.Create asRequest = auth.getGenomics(auth.getDefaultFactory())
.annotationSets().create(as);
Genomics genomics = GenomicsFactory.builder().build().fromOfflineAuth(auth);
Genomics.AnnotationSets.Create asRequest = genomics.annotationSets().create(as);
AnnotationSet asWithId = asRequest.execute();
return asWithId;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
import com.google.cloud.genomics.dataflow.utils.GenomicsDatasetOptions;
import com.google.cloud.genomics.dataflow.utils.GenomicsOptions;
import com.google.cloud.genomics.utils.Contig;
import com.google.cloud.genomics.utils.GenomicsFactory;
import com.google.cloud.genomics.utils.OfflineAuth;
import com.google.cloud.genomics.utils.ShardBoundary;
import com.google.cloud.genomics.utils.ShardUtils;
import com.google.common.base.Strings;
Expand All @@ -63,7 +63,7 @@ public class CountReads {
private static final Logger LOG = Logger.getLogger(CountReads.class.getName());
private static CountReadsOptions options;
private static Pipeline p;
private static GenomicsFactory.OfflineAuth auth;
private static OfflineAuth auth;

public static interface CountReadsOptions extends GenomicsDatasetOptions, GCSOptions {
@Description("The ID of the Google Genomics ReadGroupSet this pipeline is working with. "
Expand Down
Loading