Skip to content

Commit a2701b5

Browse files
committed
arg to do sorting on the server
1 parent b460845 commit a2701b5

File tree

4 files changed

+27
-11
lines changed

4 files changed

+27
-11
lines changed

colormipsearch-tools/src/main/java/org/janelia/colormipsearch/cmd/ExportData4NBCmd.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,9 @@ static class ExportMatchesCmdArgs extends AbstractCmdArgs {
178178
@Parameter(names = {"--max-matches-per-mip"}, description = "Maximum number of matches per mip")
179179
int maxMatchesPerMIP = 0;
180180

181+
@Parameter(names = {"--use-local-sort"}, description = "Don't use (DB) server side sorting - retrieve all data and sort it locally", arity = 0)
182+
boolean useLocalSort = false;
183+
181184
ExportMatchesCmdArgs(CommonArgs commonArgs) {
182185
super(commonArgs);
183186
}
@@ -315,7 +318,8 @@ private DataExporter getDataExporter() {
315318
args.processingPartitionSize,
316319
args.maxMatchesPerMIP,
317320
args.maxMatchedNamesPerMIP,
318-
args.dbReadPageSize
321+
args.dbReadPageSize,
322+
!args.useLocalSort
319323
);
320324
case LM_CD_MATCHES:
321325
return new LMCDMatchesExporter(
@@ -342,7 +346,8 @@ private DataExporter getDataExporter() {
342346
args.processingPartitionSize,
343347
args.maxMatchesPerMIP,
344348
args.maxMatchedNamesPerMIP,
345-
args.dbReadPageSize
349+
args.dbReadPageSize,
350+
!args.useLocalSort
346351
);
347352
case EM_PPP_MATCHES:
348353
return new EMPPPMatchesExporter(

colormipsearch-tools/src/main/java/org/janelia/colormipsearch/cmd/dataexport/AbstractCDMatchesExporter.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public abstract class AbstractCDMatchesExporter extends AbstractDataExporter {
5151
final int maxMatchedTargets;
5252
final int maxMatchesWithSameNamePerMIP;
5353
final int readPageSize;
54+
final boolean useServerSorting;
5455

5556
protected AbstractCDMatchesExporter(CachedDataHelper jacsDataHelper,
5657
DataSourceParam dataSourceParam,
@@ -71,7 +72,8 @@ protected AbstractCDMatchesExporter(CachedDataHelper jacsDataHelper,
7172
int processingPartitionSize,
7273
int maxMatchedTargets,
7374
int maxMatchesWithSameNamePerMIP,
74-
int readPageSize) {
75+
int readPageSize,
76+
boolean useServerSorting) {
7577
super(jacsDataHelper, dataSourceParam, urlTransformer, imageStoreMapping, outputDir, executor);
7678
this.targetLibraries = targetLibraries;
7779
this.targetTags = targetTags;
@@ -87,6 +89,7 @@ protected AbstractCDMatchesExporter(CachedDataHelper jacsDataHelper,
8789
this.maxMatchedTargets = maxMatchedTargets;
8890
this.maxMatchesWithSameNamePerMIP = maxMatchesWithSameNamePerMIP;
8991
this.readPageSize = readPageSize;
92+
this.useServerSorting = useServerSorting;
9093
}
9194

9295
void retrieveAllCDMIPs(List<CDMatchEntity<AbstractNeuronEntity, AbstractNeuronEntity>> matches) {

colormipsearch-tools/src/main/java/org/janelia/colormipsearch/cmd/dataexport/EMCDMatchesExporter.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.janelia.colormipsearch.datarequests.PagedRequest;
2323
import org.janelia.colormipsearch.datarequests.PagedResult;
2424
import org.janelia.colormipsearch.datarequests.ScoresFilter;
25+
import org.janelia.colormipsearch.datarequests.SortCriteria;
26+
import org.janelia.colormipsearch.datarequests.SortDirection;
2527
import org.janelia.colormipsearch.dto.AbstractNeuronMetadata;
2628
import org.janelia.colormipsearch.dto.CDMatchedTarget;
2729
import org.janelia.colormipsearch.dto.EMNeuronMetadata;
@@ -59,7 +61,8 @@ public EMCDMatchesExporter(CachedDataHelper jacsDataHelper,
5961
int processingPartitionSize,
6062
int maxMatchedTargets,
6163
int maxMatchesWithSameNamePerMIP,
62-
int readPageSize) {
64+
int readPageSize,
65+
boolean useServerSorting) {
6366
super(jacsDataHelper,
6467
dataSourceParam,
6568
targetLibraries,
@@ -79,7 +82,8 @@ public EMCDMatchesExporter(CachedDataHelper jacsDataHelper,
7982
processingPartitionSize,
8083
maxMatchedTargets,
8184
maxMatchesWithSameNamePerMIP,
82-
readPageSize);
85+
readPageSize,
86+
useServerSorting);
8387
}
8488

8589
@Override
@@ -119,9 +123,9 @@ private void runExportForMaskIds(int jobId, List<String> maskMipIds) {
119123
/* matchTags */null,
120124
/* matchExcludedTags */matchesExcludedTags,
121125
scoresFilter,
122-
null/*no sorting because it uses too much memory on the server*/,
126+
useServerSorting ? Collections.singletonList(new SortCriteria("normalizedScore", SortDirection.DESC)) : null,
123127
/* from */0,
124-
/* nRecords */-1,
128+
/* nRecords */useServerSorting && maxMatchedTargets > 0 ? maxMatchedTargets : -1,
125129
/* readPageSize */readPageSize);
126130
List<CDMatchEntity<AbstractNeuronEntity, AbstractNeuronEntity>> selectedMatchesForMask;
127131
LOG.info("Found {} color depth matches for mip {}", allMatchesForMask.size(), maskMipId);

colormipsearch-tools/src/main/java/org/janelia/colormipsearch/cmd/dataexport/LMCDMatchesExporter.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.janelia.colormipsearch.datarequests.PagedRequest;
2323
import org.janelia.colormipsearch.datarequests.PagedResult;
2424
import org.janelia.colormipsearch.datarequests.ScoresFilter;
25+
import org.janelia.colormipsearch.datarequests.SortCriteria;
26+
import org.janelia.colormipsearch.datarequests.SortDirection;
2527
import org.janelia.colormipsearch.dto.AbstractNeuronMetadata;
2628
import org.janelia.colormipsearch.dto.CDMatchedTarget;
2729
import org.janelia.colormipsearch.dto.EMNeuronMetadata;
@@ -59,7 +61,8 @@ public LMCDMatchesExporter(CachedDataHelper jacsDataHelper,
5961
int processingPartitionSize,
6062
int maxMatchedTargets,
6163
int maxMatchesWithSameNamePerMIP,
62-
int readPageSize) {
64+
int readPageSize,
65+
boolean useServerSorting) {
6366
super(jacsDataHelper,
6467
dataSourceParam,
6568
maskLibraries,
@@ -79,7 +82,8 @@ public LMCDMatchesExporter(CachedDataHelper jacsDataHelper,
7982
processingPartitionSize,
8083
maxMatchedTargets,
8184
maxMatchesWithSameNamePerMIP,
82-
readPageSize);
85+
readPageSize,
86+
useServerSorting);
8387
}
8488

8589
@Override
@@ -120,9 +124,9 @@ private void runExportForTargetIds(int jobId, List<String> targetMipIds) {
120124
/* matchTags */null,
121125
/* matchExcludedTags */matchesExcludedTags,
122126
/* matchesScoresFilter */scoresFilter,
123-
/* no sorting yet because it uses too much memory on the server */null,
127+
useServerSorting ? Collections.singletonList(new SortCriteria("normalizedScore", SortDirection.DESC)) : null,
124128
/* from */0,
125-
/* nRecords */-1,
129+
/* nRecords */useServerSorting && maxMatchedTargets > 0 ? maxMatchedTargets : -1,
126130
/* readPageSize */readPageSize);
127131
LOG.info("Found {} color depth matches for mip {}", allMatchesForTarget.size(), targetMipId);
128132
List<CDMatchEntity<AbstractNeuronEntity, AbstractNeuronEntity>> selectedMatchesForTarget;

0 commit comments

Comments
 (0)