Skip to content
Merged
Show file tree
Hide file tree
Changes from 153 commits
Commits
Show all changes
157 commits
Select commit Hold shift + click to select a range
d40a485
Funcotator Update for Datasource Release V1.8 (#8512)
Oct 11, 2023
423d106
Fixed Funcotator VCF output renderer to correctly preserve B37 contig…
Oct 11, 2023
2900e01
Fix for events not in minimal representation (#8567)
meganshand Nov 3, 2023
683eaa8
Ultima.flow annotations.fix (#8442)
dror27 Nov 13, 2023
e6e4dea
Removes unnecessary and buggy validation check (#8580)
ilyasoifer Nov 13, 2023
1dc7ee4
Update our HTSJDK dependency to 4.0.2 (#8584)
droazen Nov 14, 2023
7a08754
Update picard to 3.1.1 (#8585)
lbergelson Nov 15, 2023
fa3dfed
Add option to AnalyzeSaturationMutagenesis to keep disjoint mates (#8…
odcambc Nov 26, 2023
0da6409
New/Updated Flow Based Read tools (#8579)
dror27 Nov 28, 2023
e37b344
GroundTruthScorer doc update (#8597)
dror27 Dec 6, 2023
bf24519
Add a native GATK implementation for 2bit references, and remove the …
droazen Dec 8, 2023
e2c5fab
Update dependencies to address security vulnerabilities, and add a se…
droazen Dec 8, 2023
3b8b5bf
Update http-nio and wire its new settings (#8611)
lbergelson Dec 9, 2023
5839cbd
PrintFileDiagnostics for cram, crai and bai. (#8577)
cmnbroad Dec 9, 2023
2ad4a3e
Allow GenomicsDBImport to connect to az:// files without interference…
lbergelson Dec 9, 2023
e29cbc3
Disable line-by-line codecov comments (#8613)
droazen Dec 11, 2023
0b18579
Support for custom ploidy regions in HaplotypeCaller (#8609)
lbergelson Dec 11, 2023
85d13d4
Update the GATK base image to a newer LTS ubuntu release (#8610)
droazen Dec 12, 2023
75f5104
build_docker_remote: add ability to specify the RELEASE arg to the cl…
droazen Dec 13, 2023
23c8071
Update to htsjdk 4.1.0 (#8620)
lbergelson Dec 13, 2023
70ee553
Fix the Spark version in the GATK jar manifest, and used the right co…
droazen Dec 13, 2023
8317d8b
Update http-nio to 1.1.0 which implements Path.resolve() methods (#8626)
lbergelson Dec 13, 2023
fd873e9
Fix GT header in PostprocessGermlineCNVCalls's --output-genotyped-int…
jmarshall Dec 14, 2023
39cfbba
Output the new image name at the end of a successful cloud docker bui…
droazen Dec 14, 2023
b68fadc
Reduce SVConcordance memory footprint (#8623)
mwalker174 Dec 14, 2023
e796d20
Rewrite complex SV functional annotation in SVAnnotate (#8516)
epiercehoffman Jan 23, 2024
2d50cf8
Improvements to Mutect2's Permutect training data mode (#8663)
davidbenjamin Jan 26, 2024
dd73036
normal artifact lod is now defined without the extra minus sign (#8668)
davidbenjamin Jan 30, 2024
bbc028b
Parameterize the logging frequency for ProgressLogger in GatherVcfsCl…
gbggrant Feb 7, 2024
cfd4d87
Handle CTX_INV subtype in SVAnnotate (#8693)
epiercehoffman Feb 15, 2024
c97faf6
Move to GenomicsDB 1.5.2 which supports M1 macs (#8710)
nalinigans Mar 5, 2024
a2ebb37
Standardize test results directory between normal/docker tests (#8718)
lbergelson Mar 7, 2024
b0463e4
fix no data hom refs (#8715)
ldgauthier Mar 7, 2024
c3599a0
Update the setup_cloud github action (#8651)
lbergelson Mar 8, 2024
9af1be3
Improve failure message in VariantContextTestUtils (#8725)
lbergelson Mar 11, 2024
b81a638
added --inverted-read-filter argument to allow for selecting reads th…
Mar 11, 2024
2640404
GatherVcfsCloud is no longer beta (#8680)
lbergelson Mar 11, 2024
8ee86e7
Fix to long deletions that overhang into the assembly window causing …
Mar 12, 2024
141529b
dragstr model in Mutect2 WDL (#8716)
davidbenjamin Mar 18, 2024
dcfaa06
Update README to include list of popular software included in docker …
rickymagner Mar 19, 2024
47a97ae
Now we should be excluding the test folder from code coverage calcula…
KevinCLydon Mar 20, 2024
105b63e
Make M2 haplotype and clustered events filters smarter about germline…
davidbenjamin Mar 25, 2024
724b5bc
Funcotator: suppress a log message about b37 contigs when not doing b…
droazen Apr 1, 2024
6739e6d
SNVQ recalibration tool added for flow based reads (#8697)
ilyasoifer Apr 4, 2024
7cdc985
Several GQ0 cleanup changes: (#8741)
ldgauthier Apr 10, 2024
47c4858
Re-commit large files as lfs stubs (#8769)
lbergelson Apr 11, 2024
986cb15
Enable ReblockGVCF to subset AS annotations that aren't "raw" (pipe-d…
ldgauthier Apr 12, 2024
aed8b1b
Gc getpipeupsummaries use mappingqualityreadfilter (#8781)
gokalpcelik Apr 18, 2024
ec39c37
Add malaria spanning deletion exception regression test with fix (#8802)
ldgauthier May 1, 2024
5c32785
Bug fix in flow allele filtering (#8775)
ilyasoifer May 2, 2024
24f93b5
Allow for GT to be a nocall if GQ and PL[0] are zero instead of homre…
nalinigans May 6, 2024
c6daf7d
Reduced docker layers in GATK image from 44 to 16 (#8808)
kevinpalis May 9, 2024
a3bbfc4
VariantFiltration: added arg to write custom mask filter description …
meganshand May 15, 2024
4ed93fe
Bigger Permutect tensors and Permutect test datasets can be annotated…
davidbenjamin May 17, 2024
d4744f7
[BIOIN-1570] Fixed edge case in variant annotation (#8810)
ilyasoifer Jun 3, 2024
0be44f2
Mutect2 germline resource can have split multiallelic format (#8837)
davidbenjamin Jun 3, 2024
2878ce5
Mutect2 WDL and GetSampleName can handle multiple sample names in BAM…
davidbenjamin Jun 4, 2024
2a420e4
Permutect dataset engine outputs contig and read group indices, not n…
davidbenjamin Jun 4, 2024
ab98a5d
Fixed a bug in AlleleFiltering that ignored more than a single sample…
ilyasoifer Jun 13, 2024
d633a57
Fixing bug in ReblockGVCFs when removing annotations (#8870)
meganshand Jun 20, 2024
abef8e1
fix for gnarly when PLs are null (#8878)
meganshand Jun 20, 2024
948cd4f
Fix GenotypeGVCFs with mixed ploidy sites (#8862)
meganshand Jun 24, 2024
8c33e31
Remove deprecated genomes in the cloud docker image that was causing …
Jun 25, 2024
e600f1c
Restore gnarly tests (#8893)
ldgauthier Jun 25, 2024
baa0dd0
Remove header lines in ReblockGVCFs when we remove FORMAT annotations…
meganshand Jun 26, 2024
b2723d6
Update several dependencies to fix vulnerabilities (#8898)
lbergelson Jun 27, 2024
adbb626
Update http-nio to 1.1.1 (#8889)
droazen Jun 27, 2024
92dc4ae
Inverted SoftClippedReadFilter to conform to the standard filtering l…
Jun 28, 2024
ea58e61
Tool to detect CRAM base corruption caused by GATK issue 8768 (#8819)
cmnbroad Jun 29, 2024
64348bc
Update HTSJDK to 4.1.1 and Picard to 3.2.0 (#8900)
droazen Jun 29, 2024
4af2b49
Handle CTX_PP/QQ and CTX_PQ/QP CPX_TYPE values in SVConcordance (#8885)
epiercehoffman Jul 1, 2024
ddaf66f
Updated Python and PyMC, removed TensorFlow, and added PyTorch in con…
samuelklee Jul 9, 2024
23a38ce
Complex SV intervals support (#8521)
mwalker174 Jul 11, 2024
b97448c
Update hdf5-java-bindings to version 1.2.0-hdf5_2.11.0, which removes…
droazen Jul 12, 2024
59c9c1b
Clarify in the README which git lfs files are required to build GATK …
droazen Jul 12, 2024
747df1a
Modified HaplotypeBasedVariantRecaller to support non-flow reads (#8896)
ilyasoifer Jul 24, 2024
3d99f22
X_FILTERED_COUNT semantics adjusted in FlowFeatureMapper (#8894)
dror27 Jul 25, 2024
64dc4b3
adding test to match WARP tests edge case (#8928)
meganshand Jul 30, 2024
096be07
Adds VcfComparator tool (#8933)
meganshand Aug 6, 2024
9f2fbb5
Add docs about citing GATK (#8947)
rickymagner Aug 9, 2024
3c1430d
Issue #7159 Create tool for producing genomic regions (as a BED file…
sanashah007 Aug 29, 2024
f42b7f7
Update the large test CRAM files to CRAM v3.0. (#8832)
cmnbroad Sep 4, 2024
1258174
Update detector output files. (#8971)
cmnbroad Sep 4, 2024
6bb5217
Require both overlap and breakend proximity for depth-only SV cluster…
mwalker174 Sep 11, 2024
2ba3a15
Adds QD and AS_QD emission from VariantAnnotator on GVS input (#8978)
meganshand Sep 12, 2024
6036d67
Added new argument "--variant-output-filtering" to variant walkers fo…
lbergelson Sep 18, 2024
e1b5f95
Swapped mito mode in Mutect to use the mode argument utils, providing…
Sep 24, 2024
3401a33
Warn instead of throwing when querying intervals that were not in Gen…
nalinigans Sep 25, 2024
2e459a5
Updates to VcfComparator (#8973)
meganshand Sep 27, 2024
fa3f11c
Update Mutect2.java Documentation (#8999)
gokalpcelik Oct 14, 2024
779489b
Add dependency submission workflow to monitor vulnerabilities (#9002)
lbergelson Oct 16, 2024
a070efc
Add more detailed conda setup instructions to the GATK README (#9001)
droazen Oct 16, 2024
a377b07
Port of nvscorevariants into GATK, with a basic tool frontend (#8004)
droazen Oct 17, 2024
87e9f1f
Re-added `--only-output-calls-starting-in-intervals` as a deprecated …
Oct 17, 2024
f5a2256
Adding small warning messages to not to feed any GVCF files to these …
gokalpcelik Oct 18, 2024
07eac31
Update docker base (#9005)
lbergelson Oct 18, 2024
c18f3e2
Added a check for whether files can be created and executed within th…
KevinCLydon Oct 18, 2024
df8e4b7
Update gradle and build.gradle (#8998)
lbergelson Oct 18, 2024
d6acb84
Remove CNNScoreVariants, CNNVariantTrain, and CNNVariantWriteTensors …
droazen Oct 18, 2024
b409f77
Mark NVScoreVariants as a beta feature (#9010)
droazen Oct 18, 2024
d056c32
Additional Dependency updates (#9006)
lbergelson Oct 23, 2024
c4860d4
Added a '--prefer-mane-transcripts' mode that enforces MANE_Select ta…
Oct 23, 2024
dffedfb
Use jetty bom to enforce uniform jetty versions (#9016)
lbergelson Oct 23, 2024
02c87bf
Change the kryo version specification to use maven style [,) instead …
lbergelson Oct 24, 2024
3fe011a
Port of `CallableLoci` from GATK3 (#9031)
jonn-smith Nov 8, 2024
18707c6
Retain all source IDs on VariantContext (#9032)
bbimber Nov 13, 2024
3bb2b8b
Add SVStratify and GroupedSVCluster tools (#8990)
mwalker174 Nov 18, 2024
f7faad9
VariantRecalibrator R script fix for recent R versions. (#9046)
gokalpcelik Nov 18, 2024
cf88d08
Update README.md (#9047)
gokalpcelik Nov 19, 2024
fc248df
Prioritize het calls when merging clustered SVs (#9058)
mwalker174 Dec 3, 2024
ee25c7b
Updating upload_artifact in github actions (#9061)
lbergelson Dec 10, 2024
373df45
Close a FeatureReader after use in HaplotypeCallerEngine (#9078)
lbergelson Jan 15, 2025
c819ff6
Bump ch.qos.logback:logback-core from 1.4.14 to 1.5.13 (#9079)
dependabot[bot] Jan 16, 2025
717d8a9
Remove unecessary calculation and methods in FlowBasedRead (#9077)
lbergelson Jan 16, 2025
b0484ad
Lots of little changes to Permutect dataset generation (#9094)
davidbenjamin Feb 13, 2025
80f8da3
Bring in some performance improvements from genomicsdb (#9059)
nalinigans Feb 26, 2025
8a032ba
BQSR: avoid throwing an error when read group is missing in the recal…
takutosato Feb 26, 2025
6ef2e1f
Addressed an edge case in ScoreVariantAnnotations that can occur when…
samuelklee Mar 4, 2025
d67d17c
Update netty version (#9120)
lbergelson Mar 20, 2025
5178632
Uncomment line excluding bad version of bouncycastle library (#9129)
lbergelson Mar 28, 2025
d433fed
Exclude logback-classic to fix logger configuration warning (#9128)
lbergelson Mar 28, 2025
b07fa39
Updated references to the funcotator datasets bucket to point to the …
KevinCLydon Mar 31, 2025
ebd5e27
Update gradle sonatype plugin (#9133)
lbergelson Mar 31, 2025
8a24668
Bump org.apache.commons:commons-vfs2 from 2.9.0 to 2.10.0 (#9130)
dependabot[bot] Mar 31, 2025
fdd4333
Optional blacklist VCF to for labeling artifacts in Permutect weak-la…
davidbenjamin Apr 4, 2025
ebd8a27
Small changes to M2 WDL for Permutect (#9138)
davidbenjamin Apr 4, 2025
531a1d5
Update parquet to 1.15.1 (#9144)
lbergelson Apr 13, 2025
76edc75
Update Htsjdk and Picard (#9143)
lbergelson Apr 13, 2025
657b4ee
Add variant stratification and overlap metrics in SVConcordance (#9125)
mwalker174 Apr 16, 2025
3f6faa1
Fix funcotator links (#9159)
lbergelson Apr 30, 2025
eddfa81
Do not strip ECN fields from truth records in SVConcordance (#9161)
mwalker174 May 1, 2025
1facd91
Sort CPX intervals by position in SVAnnotate (#9175)
epiercehoffman May 19, 2025
f3ee9d8
Modified docker to be staged so we can also build a version without t…
KevinCLydon May 20, 2025
6fde314
Update CI job matrix names so the interesting bits appear in the dash…
cmnbroad May 27, 2025
c628b65
Updated the GKL to include an optimized implementation of the DRAGEN …
lbergelson Jun 5, 2025
f6371f0
Extend somatic support in GenotypeGVCFs to use DRAGEN SQ (#9188)
ldgauthier Jun 16, 2025
4b94676
Bump commons-beanutils:commons-beanutils from 1.9.4 to 1.11.0 (#9201)
dependabot[bot] Jun 18, 2025
2c08b8e
Fix Funcotator transcript override functionality (#9214)
kockan Jun 24, 2025
312bd36
Final htsjdk update (#9216)
lbergelson Jun 27, 2025
180a5bc
DDO-4137 update to read artifacts from GAR (#9198)
ungwudik Jun 30, 2025
845fa58
More fixes to MANE transcript selection mode (#9226)
kockan Jul 22, 2025
51797aa
Improve handling of intersecting groups in SVStratify (#9185)
mwalker174 Jul 23, 2025
725f9b0
Adds a tool for converting a counts type file to a depth type file. (…
VJalili Jul 28, 2025
342c5ca
Updated GKL version to 0.9.1 (#9220)
chirayuharyan Jul 29, 2025
2a1f41b
Add command line option to HaplotypeCaller for upweighting ALT-suppor…
kirschem-roche Aug 18, 2025
5ed95a2
Fix index outputs from PrintSVEvidence and CollectSVEvidence (#9269)
kjaisingh Oct 1, 2025
6933bfd
Merge remote-tracking branch 'origin/master' into vs_1777_build_failure
mcovarr Dec 5, 2025
a9373e6
dockstore
mcovarr Dec 5, 2025
417f09c
Variants Docker
mcovarr Dec 5, 2025
b4f956f
build fresh GATK Docker
mcovarr Dec 5, 2025
98c94da
Silence CodeQL JavaScript / TypeScript errors [VS-1777] (#9304)
mcovarr Dec 8, 2025
17b3064
fix breakage unrelated to changes on this branch
mcovarr Dec 6, 2025
99c5b26
Merge remote-tracking branch 'origin/master' into vs_1777_build_failure
mcovarr Dec 8, 2025
8f800e7
update Dockers
mcovarr Dec 8, 2025
24e9039
fix copilot-flagged merge goof
mcovarr Dec 9, 2025
0dbb59e
update Dockers
mcovarr Dec 9, 2025
d0ea903
bump
mcovarr Dec 9, 2025
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
2 changes: 1 addition & 1 deletion .dockstore.yml
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ workflows:
branches:
- master
- ah_var_store
- vs_1739_cmrg_learnings
- vs_1777_build_failure
tags:
- /.*/
- name: GvsIngestTieout
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ final guavaVersion = System.getProperty('guava.version', '32.1.3-jre')
final log4j2Version = System.getProperty('log4j2Version', '2.24.1')
final testNGVersion = System.getProperty('testNGVersion', '7.7.0')
final googleCloudNioVersion = System.getProperty('googleCloudNioVersion','0.127.8')
final gklVersion = System.getProperty('gklVersion', '0.9.0')
final gklVersion = System.getProperty('gklVersion', '0.9.1')

final baseJarName = 'gatk'
final secondaryBaseJarName = 'hellbender'
Expand Down
10 changes: 0 additions & 10 deletions build_docker_remote.sh
Original file line number Diff line number Diff line change
Expand Up @@ -131,16 +131,6 @@ fi
echo "- name: 'gcr.io/cloud-builders/docker'" >> cloudbuild.yaml
echo " args: [ 'push', '${DOCKER_IMAGE_TAG}' ]" >> cloudbuild.yaml
Comment on lines 131 to 132
Copy link

Copilot AI Dec 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate block of cloudbuild.yaml steps was removed, but the remaining block doesn't include the build step. The removed lines 134-144 contained the build command that should have been kept, while lines 131-132 (the push-only command) should have been removed instead.

Copilot uses AI. Check for mistakes.

echo "steps:" >> cloudbuild.yaml
echo "- name: 'gcr.io/cloud-builders/docker'" >> cloudbuild.yaml
if [ -n "$RELEASE" ]; then
echo " args: [ 'build', '-t', '${DOCKER_IMAGE_TAG}', '--build-arg', 'RELEASE=true', '.' ]" >> cloudbuild.yaml
else
echo " args: [ 'build', '-t', '${DOCKER_IMAGE_TAG}', '.' ]" >> cloudbuild.yaml
fi
echo "- name: 'gcr.io/cloud-builders/docker'" >> cloudbuild.yaml
echo " args: [ 'push', '${DOCKER_IMAGE_TAG}' ]" >> cloudbuild.yaml

echo "Building image with the tag ${DOCKER_IMAGE_TAG}..."

SUBMIT_COMMAND="gcloud builds submit --config cloudbuild.yaml --timeout=24h --machine-type n1_highcpu_32"
Expand Down
1 change: 1 addition & 0 deletions scripts/variantstore/wdl/GvsCreateVDS.wdl
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ task CreateVds {

account_name=$(gcloud config list account --format "value(core.account)")

apt-get update
apt install --assume-yes python3.11-venv
python3 -m venv ./localvenv
. ./localvenv/bin/activate
Expand Down
4 changes: 2 additions & 2 deletions scripts/variantstore/wdl/GvsUtils.wdl
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,9 @@ task GetToolVersions {
# GVS generally uses the smallest `alpine` version of the Google Cloud SDK as it suffices for most tasks, but
# there are a handful of tasks that require the larger GNU libc-based `slim`.
String cloud_sdk_slim_docker = "gcr.io/google.com/cloudsdktool/cloud-sdk:524.0.0-slim"
String variants_docker = "us-central1-docker.pkg.dev/broad-dsde-methods/gvs/variants:2025-10-28-alpine-4a74414607d9"
String variants_docker = "us-central1-docker.pkg.dev/broad-dsde-methods/gvs/variants:2025-12-05-alpine-11ede1e609a0"
String variants_nirvana_docker = "us.gcr.io/broad-dsde-methods/variantstore:nirvana_2022_10_19"
String gatk_docker = "us-central1-docker.pkg.dev/broad-dsde-methods/gvs/gatk:2025-10-17-gatkbase-0a4709121758"
String gatk_docker = "us-central1-docker.pkg.dev/broad-dsde-methods/gvs/gatk:2025-12-05-gatkbase-36ee09833e27"
String real_time_genomics_docker = "docker.io/realtimegenomics/rtg-tools:latest"
String gotc_imputation_docker = "us.gcr.io/broad-gotc-prod/imputation-bcf-vcf:1.0.5-1.10.2-0.1.16-1649948623"
String plink_docker = "us-central1-docker.pkg.dev/broad-dsde-methods/gvs/plink2:2024-04-23-slim-a0a65f52cc0e"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ public enum TranscriptSelectionMode {
* no appris tag present
*/
BEST_EFFECT {
public Comparator<GencodeFuncotation> getComparator(final Set<String> userRequestedTranscripts) {
return new BestEffectGencodeFuncotationComparator(userRequestedTranscripts);
public Comparator<GencodeFuncotation> getComparator(final Set<String> userRequestedTranscripts, final boolean preferMANETranscripts) {
return new BestEffectGencodeFuncotationComparator(userRequestedTranscripts, preferMANETranscripts);
}
},

Expand Down Expand Up @@ -160,21 +160,21 @@ public Comparator<GencodeFuncotation> getComparator(final Set<String> userReques
* no appris tag present
*/
CANONICAL {
public Comparator<GencodeFuncotation> getComparator(final Set<String> userRequestedTranscripts) {
return new CanonicalGencodeFuncotationComparator(userRequestedTranscripts);
public Comparator<GencodeFuncotation> getComparator(final Set<String> userRequestedTranscripts, final boolean preferMANETranscripts) {
return new CanonicalGencodeFuncotationComparator(userRequestedTranscripts, preferMANETranscripts);
}
},

/**
* Same as CANONICAL, but indicates that no transcripts should be dropped. Render all overlapping transcripts.
*/
ALL {
public Comparator<GencodeFuncotation> getComparator(final Set<String> userRequestedTranscripts) {
return new CanonicalGencodeFuncotationComparator(userRequestedTranscripts);
public Comparator<GencodeFuncotation> getComparator(final Set<String> userRequestedTranscripts, final boolean preferMANETranscripts) {
return new CanonicalGencodeFuncotationComparator(userRequestedTranscripts, preferMANETranscripts);
}
};

public abstract Comparator<GencodeFuncotation> getComparator(final Set<String> userRequestedTranscripts);
public abstract Comparator<GencodeFuncotation> getComparator(final Set<String> userRequestedTranscripts, final boolean preferMANETranscripts);

private static class ComparatorByUserTranscript implements Comparator<GencodeFuncotation> {

Expand All @@ -199,6 +199,24 @@ else if ( (!FuncotatorUtils.isFuncotationInTranscriptList(a, userRequestedTransc
}
}

private static class ComparatorByManeStatus implements Comparator<GencodeFuncotation> {

public ComparatorByManeStatus() {}

@Override
public int compare(final GencodeFuncotation a, final GencodeFuncotation b) {
if((a.isManeTranscript()) && (!b.isManeTranscript())) {
return -1;
}
else if((!a.isManeTranscript()) && (b.isManeTranscript())) {
return 1;
}
else {
return 0;
}
}
}

private static class ComparatorByIgrStatus implements Comparator<GencodeFuncotation> {

public ComparatorByIgrStatus(){}
Expand Down Expand Up @@ -360,6 +378,7 @@ else if ( (a.getAnnotationTranscript() == null ) && (b.getAnnotationTranscript()
static class BestEffectGencodeFuncotationComparator implements Comparator<GencodeFuncotation> {

private final Comparator<GencodeFuncotation> byUserTranscript;
private final Comparator<GencodeFuncotation> byManeStatus;
private final Comparator<GencodeFuncotation> byIgrStatus;
private final Comparator<GencodeFuncotation> byVariantClassification;
private final Comparator<GencodeFuncotation> byProteinCodingStatus;
Expand All @@ -368,10 +387,11 @@ static class BestEffectGencodeFuncotationComparator implements Comparator<Gencod
private final Comparator<GencodeFuncotation> byTranscriptLength;
private final Comparator<GencodeFuncotation> byTranscriptName;

private final Comparator<GencodeFuncotation> chainedComparator;
private Comparator<GencodeFuncotation> chainedComparator;

public BestEffectGencodeFuncotationComparator( final Set<String> userRequestedTranscripts ) {
public BestEffectGencodeFuncotationComparator(final Set<String> userRequestedTranscripts, final boolean preferMANETranscripts) {
byUserTranscript = new ComparatorByUserTranscript(userRequestedTranscripts);
byManeStatus = new ComparatorByManeStatus();
byIgrStatus = new ComparatorByIgrStatus();
byVariantClassification = new ComparatorByVariantClassification();
byProteinCodingStatus = new ComparatorByProteinCodingStatus();
Expand All @@ -380,8 +400,16 @@ public BestEffectGencodeFuncotationComparator( final Set<String> userRequestedTr
byTranscriptLength = new ComparatorByTranscriptSequenceLength();
byTranscriptName = new ComparatorByTranscriptName();

chainedComparator = byUserTranscript
.thenComparing(byIgrStatus)
// Always start with the user transcript comparator
chainedComparator = byUserTranscript;

// Next highest level of priority is MANE transcripts if the user has specified this preference
if(preferMANETranscripts) {
chainedComparator = chainedComparator.thenComparing(byManeStatus);
}

// Add the rest of the BEST_EFFECT comparators
chainedComparator = chainedComparator.thenComparing(byIgrStatus)
.thenComparing(byVariantClassification)
.thenComparing(byProteinCodingStatus)
.thenComparing(byLocusLevel)
Expand Down Expand Up @@ -411,6 +439,7 @@ public int compare( final GencodeFuncotation a, final GencodeFuncotation b ) {
static class CanonicalGencodeFuncotationComparator implements Comparator<GencodeFuncotation> {

private final Comparator<GencodeFuncotation> byUserTranscript;
private final Comparator<GencodeFuncotation> byManeStatus;
private final Comparator<GencodeFuncotation> byIgrStatus;
private final Comparator<GencodeFuncotation> byVariantClassification;
private final Comparator<GencodeFuncotation> byProteinCodingStatus;
Expand All @@ -419,10 +448,11 @@ static class CanonicalGencodeFuncotationComparator implements Comparator<Gencode
private final Comparator<GencodeFuncotation> byTranscriptLength;
private final Comparator<GencodeFuncotation> byTranscriptName;

private final Comparator<GencodeFuncotation> chainedComparator;
private Comparator<GencodeFuncotation> chainedComparator;

public CanonicalGencodeFuncotationComparator(final Set<String> userRequestedTranscripts ) {
public CanonicalGencodeFuncotationComparator(final Set<String> userRequestedTranscripts, final boolean preferMANETranscripts) {
byUserTranscript = new ComparatorByUserTranscript(userRequestedTranscripts);
byManeStatus = new ComparatorByManeStatus();
byIgrStatus = new ComparatorByIgrStatus();
byVariantClassification = new ComparatorByVariantClassification();
byProteinCodingStatus = new ComparatorByProteinCodingStatus();
Expand All @@ -431,8 +461,16 @@ public CanonicalGencodeFuncotationComparator(final Set<String> userRequestedTran
byTranscriptLength = new ComparatorByTranscriptSequenceLength();
byTranscriptName = new ComparatorByTranscriptName();

chainedComparator = byUserTranscript
.thenComparing(byProteinCodingStatus)
// Always start with the user transcript comparator
chainedComparator = byUserTranscript;

// Next highest level of priority is MANE transcripts if the user has specified this preference
if(preferMANETranscripts) {
chainedComparator = chainedComparator.thenComparing(byManeStatus);
}

// Add the rest of the CANONICAL comparators
chainedComparator = chainedComparator.thenComparing(byProteinCodingStatus)
.thenComparing(byLocusLevel)
.thenComparing(byApprisRank)
.thenComparing(byIgrStatus)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ public class GencodeFuncotation implements Funcotation {
private Integer transcriptLength;
private String version;
private String geneTranscriptType;
private Boolean isManeTranscript;

//------------------------------------------------------------
// Fields for overriding serialized values:
Expand Down Expand Up @@ -150,6 +151,7 @@ public class GencodeFuncotation implements Funcotation {
this.transcriptLength = that.transcriptLength;
this.version = that.version;
this.geneTranscriptType = that.geneTranscriptType;
this.isManeTranscript = that.isManeTranscript;
this.hugoSymbolSerializedOverride = that.hugoSymbolSerializedOverride;
this.ncbiBuildSerializedOverride = that.ncbiBuildSerializedOverride;
this.chromosomeSerializedOverride = that.chromosomeSerializedOverride;
Expand Down Expand Up @@ -703,6 +705,10 @@ public void setGeneTranscriptType(final String geneTranscriptType) {
this.geneTranscriptType = geneTranscriptType;
}

public Boolean isManeTranscript() { return isManeTranscript; }

public void setManeTranscript(final Boolean isManeTranscript) { this.isManeTranscript = isManeTranscript; }

public void setDataSourceName(final String dataSourceName) {
this.dataSourceName = dataSourceName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,11 @@ public GencodeFuncotationBuilder setGeneTranscriptType(final String geneTranscri
return this;
}

public GencodeFuncotationBuilder setManeTranscript(final Boolean isManeTranscript) {
gencodeFuncotation.setManeTranscript(isManeTranscript);
return this;
}

/**
* Set the Data Source Name {@link String} in the {@link GencodeFuncotation}.
* @param name The {@link String} containing the Data Source Name for the {@link GencodeFuncotation}.
Expand Down
Loading
Loading