@@ -134,10 +134,10 @@ function getFrameMapping (metadata) {
134134 numberOfOpticalPaths = Number ( metadata . NumberOfOpticalPaths || 1 )
135135 numberOfChannels = numberOfOpticalPaths
136136 } else if ( metadata . SegmentSequence != null ) {
137- numberOfSegments = metadata . SegmentSequence . length
137+ numberOfSegments = Number ( metadata . SegmentSequence . length )
138138 numberOfChannels = numberOfSegments
139139 } else if ( Object . keys ( mappingNumberToFrameNumbers ) . length > 0 ) {
140- numberOfMappings = Object . keys ( mappingNumberToFrameNumbers ) . length
140+ numberOfMappings = Number ( Object . keys ( mappingNumberToFrameNumbers ) . length )
141141 numberOfChannels = numberOfMappings
142142 } else {
143143 throw new Error ( 'Could not determine the number of image channels.' )
@@ -154,7 +154,7 @@ function getFrameMapping (metadata) {
154154 metadata . DimensionOrganizationType || 'TILED_SPARSE'
155155 )
156156 if ( dimensionOrganizationType === 'TILED_FULL' ) {
157- let n = 1
157+ let number = 1
158158 // Forth, along "channels"
159159 for ( let i = 0 ; i < numberOfChannels ; i ++ ) {
160160 // Third, along the depth direction from glass slide -> coverslip
@@ -171,19 +171,21 @@ function getFrameMapping (metadata) {
171171 let channelIdentifier
172172 if ( numberOfOpticalPaths > 0 ) {
173173 const opticalPath = metadata . OpticalPathSequence [ i ]
174- channelIdentifier = opticalPath . OpticalPathIdentifier
174+ channelIdentifier = String ( opticalPath . OpticalPathIdentifier )
175175 } else if ( numberOfSegments > 0 ) {
176- const segment = metadata . SegmentIdentificationSequence [ i ]
177- channelIdentifier = String ( segment . ReferencedSegmentNumber )
176+ const segment = metadata . SegmentSequence [ i ]
177+ channelIdentifier = String ( segment . SegmentNumber )
178178 } else if ( numberOfMappings > 0 ) {
179179 // TODO: ensure that frames are mapped accordingly
180- channelIdentifier = String ( frameNumberToMappingNumber [ n ] )
180+ channelIdentifier = String ( frameNumberToMappingNumber [ number ] )
181181 } else {
182- throw new Error ( `Could not determine channel of frame #${ n } .` )
182+ throw new Error (
183+ `Could not determine channel of frame #${ number } .`
184+ )
183185 }
184- const index = `${ r + 1 } -${ c + 1 } -${ channelIdentifier } `
185- frameMapping [ index ] = `${ sopInstanceUID } /frames/${ n } `
186- n += 1
186+ const key = `${ r + 1 } -${ c + 1 } -${ channelIdentifier } `
187+ frameMapping [ key ] = `${ sopInstanceUID } /frames/${ number } `
188+ number += 1
187189 }
188190 }
189191 }
@@ -197,6 +199,7 @@ function getFrameMapping (metadata) {
197199 const columnPosition = planePositions . ColumnPositionInTotalImagePixelMatrix
198200 const rowIndex = Math . ceil ( rowPosition / rows )
199201 const colIndex = Math . ceil ( columnPosition / columns )
202+ const number = j + 1
200203 let channelIdentifier
201204 if ( numberOfOpticalPaths === 1 ) {
202205 try {
@@ -207,14 +210,14 @@ function getFrameMapping (metadata) {
207210 )
208211 } catch {
209212 channelIdentifier = String (
210- perframeFuncGroups [ 0 ]
213+ perframeFuncGroups [ j ]
211214 . OpticalPathIdentificationSequence [ 0 ]
212215 . OpticalPathIdentifier
213216 )
214217 }
215218 } else if ( numberOfOpticalPaths > 1 ) {
216219 channelIdentifier = String (
217- perframeFuncGroups [ 0 ]
220+ perframeFuncGroups [ j ]
218221 . OpticalPathIdentificationSequence [ 0 ]
219222 . OpticalPathIdentifier
220223 )
@@ -227,25 +230,25 @@ function getFrameMapping (metadata) {
227230 )
228231 } catch {
229232 channelIdentifier = String (
230- perframeFuncGroups [ 0 ]
233+ perframeFuncGroups [ j ]
231234 . SegmentIdentificationSequence [ 0 ]
232235 . ReferencedSegmentNumber
233236 )
234237 }
235238 } else if ( numberOfSegments > 1 ) {
236239 channelIdentifier = String (
237- perframeFuncGroups [ 0 ]
240+ perframeFuncGroups [ j ]
238241 . SegmentIdentificationSequence [ 0 ]
239242 . ReferencedSegmentNumber
240243 )
241244 } else if ( numberOfMappings > 0 ) {
242- channelIdentifier = String ( frameNumberToMappingNumber [ j + 1 ] )
245+ channelIdentifier = String ( frameNumberToMappingNumber [ number ] )
243246 } else {
244- throw new Error ( `Could not determine channel of frame ${ j } .` )
247+ throw new Error ( `Could not determine channel of frame ${ number } .` )
245248 }
246- const index = `${ rowIndex } -${ colIndex } -${ channelIdentifier } `
249+ const key = `${ rowIndex } -${ colIndex } -${ channelIdentifier } `
247250 const frameNumber = j + 1
248- frameMapping [ index ] = `${ sopInstanceUID } /frames/${ frameNumber } `
251+ frameMapping [ key ] = `${ sopInstanceUID } /frames/${ frameNumber } `
249252 }
250253 }
251254 return {
0 commit comments