@@ -106,8 +106,8 @@ public void run(final JavaSparkContext sparkContext)
106106 final String outputGroupPath = sZeroDatasetPath .substring (0 , sZeroDatasetPath .lastIndexOf ('/' ));
107107
108108 int numberOfDownsampledDatasets = 0 ;
109- long downsampledBlockCount = 2 ;
110- for (int scale = 1 ; ( downsampledBlockCount > 1 ) || scale <= requiredSLevel ; scale ++) {
109+ long previousDownsampledBlockCount = - 1 ;
110+ for (int scale = 1 ; ; scale ++) {
111111
112112 final String fromDataset = scale == 1 ? sZeroDatasetPath : outputGroupPath + "/s" + (scale - 1 );
113113 final String toDataset = outputGroupPath + "/s" + scale ;
@@ -117,14 +117,15 @@ public void run(final JavaSparkContext sparkContext)
117117 scaleFactors [d ] = (int ) Math .round (Math .pow (downsampleFactors [d ], scale ));
118118 }
119119
120- long blockCount = 1 ;
120+ // note that the downsampledBlockCount reflects potential grid blocks
121+ // and is likely more than the actual block count since empty blocks are not written
122+ long downsampledBlockCount = 1 ;
121123 final long [] downsampledDimensions = new long [numberOfDimensions ];
122124 for (int d = 0 ; d < numberOfDimensions ; d ++) {
123125 downsampledDimensions [d ] = dimensions [d ] / scaleFactors [d ];
124126 final long blocksInDim = (downsampledDimensions [d ] + outputBlockSize [d ] - 1 ) / outputBlockSize [d ];
125- blockCount *= blocksInDim ;
127+ downsampledBlockCount *= blocksInDim ;
126128 }
127- downsampledBlockCount = blockCount ;
128129
129130 if (n5 .datasetExists (toDataset )) {
130131
@@ -176,6 +177,13 @@ public void run(final JavaSparkContext sparkContext)
176177 }
177178
178179 numberOfDownsampledDatasets ++;
180+
181+ final boolean moreBlocksToDownsample = ((downsampledBlockCount > 1 ) &&
182+ (downsampledBlockCount != previousDownsampledBlockCount ));
183+ if ((! moreBlocksToDownsample ) || (scale <= requiredSLevel )) {
184+ break ;
185+ }
186+ previousDownsampledBlockCount = downsampledBlockCount ;
179187 }
180188
181189 // save additional parameters so that n5 can be viewed in neuroglancer
0 commit comments