diff --git a/processing/src/main/java/edu/harvard/hms/dbmi/avillach/hpds/processing/AbstractProcessor.java b/processing/src/main/java/edu/harvard/hms/dbmi/avillach/hpds/processing/AbstractProcessor.java index c9ff422f..f90bf248 100644 --- a/processing/src/main/java/edu/harvard/hms/dbmi/avillach/hpds/processing/AbstractProcessor.java +++ b/processing/src/main/java/edu/harvard/hms/dbmi/avillach/hpds/processing/AbstractProcessor.java @@ -224,11 +224,24 @@ protected Set idSetsForEachFilter(Query query) { if (distributableQuery.hasFilters()) { BigInteger patientMaskForVariantInfoFilters = genomicProcessor.getPatientMaskForVariantInfoFilters(distributableQuery); + return patientMaskToPatientIdSet(patientMaskForVariantInfoFilters); } return phenotypicPatientSet; } + public Set patientMaskToPatientIdSet(BigInteger patientMask) { + Set ids = new HashSet<>(); + String bitmaskString = patientMask.toString(2); + for(int x = 2;x < bitmaskString.length()-2;x++) { + if('1'==bitmaskString.charAt(x)) { + String patientId = variantService.getPatientIds()[x-2].trim(); + ids.add(Integer.parseInt(patientId)); + } + } + return ids; + } + /** * Process each filter in the query and return a list of patient ids that should be included in the * result. diff --git a/processing/src/main/java/edu/harvard/hms/dbmi/avillach/hpds/processing/GenomicProcessor.java b/processing/src/main/java/edu/harvard/hms/dbmi/avillach/hpds/processing/GenomicProcessor.java index abc4fb95..1b9a2d1e 100644 --- a/processing/src/main/java/edu/harvard/hms/dbmi/avillach/hpds/processing/GenomicProcessor.java +++ b/processing/src/main/java/edu/harvard/hms/dbmi/avillach/hpds/processing/GenomicProcessor.java @@ -33,9 +33,8 @@ public class GenomicProcessor { private final VariantService variantService; @Autowired - public GenomicProcessor(PatientVariantJoinHandler patientVariantJoinHandler, VariantIndexCache variantIndexCache, VariantService variantService) { + public GenomicProcessor(PatientVariantJoinHandler patientVariantJoinHandler, VariantService variantService) { this.patientVariantJoinHandler = patientVariantJoinHandler; - this.variantIndexCache = variantIndexCache; this.variantService = variantService; genomicDataDirectory = System.getProperty("HPDS_GENOMIC_DATA_DIRECTORY", "/opt/local/hpds/all/"); @@ -97,7 +96,7 @@ protected BigInteger getPatientMaskForVariantInfoFilters(DistributableQuery dist } public Set patientMaskToPatientIdSet(BigInteger patientMask) { - Set ids = new TreeSet(); + Set ids = new HashSet<>(); String bitmaskString = patientMask.toString(2); for(int x = 2;x < bitmaskString.length()-2;x++) { if('1'==bitmaskString.charAt(x)) {