Changeset 1596 for branches/3.0-Beta2
- Timestamp:
- 06/05/07 20:08:58 (17 months ago)
- Location:
- branches/3.0-Beta2/components/romio
- Files:
-
- 2 added
- 2 modified
-
src/ome/io/nio/DeltaVision.java (modified) (29 diffs)
-
src/ome/io/nio/DeltaVisionHeader.java (modified) (6 diffs)
-
test/ome/io/nio/utests/DeltaVisionTest.java (added)
-
test/ome/io/nio/utests/tinyTest.d3d.dv (added)
Legend:
- Unmodified
- Added
- Removed
-
branches/3.0-Beta2/components/romio/src/ome/io/nio/DeltaVision.java
r1578 r1596 20 20 * image file. 21 21 * <p> 22 * Copyright 2007 Glencoe Software Inc. All rights reserved. 23 * Use is subject to license terms supplied in LICENSE.txt 24 * <p/> 25 * 22 * Copyright 2007 Glencoe Software Inc. All rights reserved. Use is subject to 23 * license terms supplied in LICENSE.txt <p/> 24 * 26 25 * @author David L. Whitehurst <a 27 26 * href="mailto:david@glencoesoftware.com">david@glencoesoftware.com</a> … … 55 54 56 55 public boolean little = false; 57 56 58 57 public DeltaVisionHeader header; 59 58 … … 83 82 "Original file not available, Critical Error!"); 84 83 } catch (RuntimeException rtex) { 84 rtex.printStackTrace(); 85 85 throw new RuntimeException( 86 86 "The binary file is not a valid DeltaVision file!"); … … 90 90 } 91 91 92 /* (non-Javadoc) 92 /* 93 * (non-Javadoc) 94 * 93 95 * @see ome.io.nio.PixelBuffer#calculateMessageDigest() 94 96 */ 95 97 public byte[] calculateMessageDigest() throws IOException { 96 98 // TODO - test 97 99 MessageDigest md; 98 100 … … 116 118 } 117 119 118 /* (non-Javadoc) 120 /* 121 * (non-Javadoc) 122 * 119 123 * @see ome.io.nio.PixelBuffer#close() 120 124 */ … … 126 130 } 127 131 128 /* (non-Javadoc) 129 * @see ome.io.nio.PixelBuffer#getPlane(java.lang.Integer, java.lang.Integer, java.lang.Integer) 132 /* 133 * (non-Javadoc) 134 * 135 * @see ome.io.nio.PixelBuffer#getPlane(java.lang.Integer, 136 * java.lang.Integer, java.lang.Integer) 130 137 */ 131 138 public MappedByteBuffer getPlane(Integer z, Integer c, Integer t) 132 139 throws IOException, DimensionsOutOfBoundsException { 140 // TODO - test 133 141 Long offset = getPlaneOffset(z, c, t); 134 142 Integer size = getPlaneSize(); 135 143 136 144 MappedByteBuffer region = getRegion(size, offset); 137 145 … … 148 156 } 149 157 150 /* (non-Javadoc) 151 * @see ome.io.nio.PixelBuffer#getPlaneOffset(java.lang.Integer, java.lang.Integer, java.lang.Integer) 158 /* 159 * (non-Javadoc) 160 * 161 * @see ome.io.nio.PixelBuffer#getPlaneOffset(java.lang.Integer, 162 * java.lang.Integer, java.lang.Integer) 152 163 */ 153 164 public Long getPlaneOffset(Integer z, Integer c, Integer t) … … 155 166 156 167 checkBounds(null, z, c, t); 157 158 Integer timepointSize = getTimepointSize(); 159 Integer stackSize = getStackSize(); 160 Integer planeSize = getPlaneSize(); 161 162 return (long) timepointSize * t + (long) stackSize * c 163 + (long) planeSize * z; 164 165 } 166 167 /* (non-Javadoc) 168 int planeNo = getAbsolutePlaneOffset(z, c, t); 169 170 return (long) getPlaneSize() * planeNo; 171 172 } 173 174 /** 175 * Privately returns the absolute plane number index in the set of X-Y 176 * planes (planes start with 1) 177 * 178 * @param z 179 * @param c 180 * @param t 181 * @return 182 */ 183 private int getAbsolutePlaneOffset(Integer z, Integer c, Integer t) { 184 185 int result = 0; 186 187 switch (getHeader().getSequence()) { 188 189 case 0: // ZTC 190 result = ((c * getSizeT() * getSizeZ()) + (t * getSizeZ()) + z); 191 break; 192 193 case 1: // CZT 194 result = ((t * getSizeC() * getSizeZ()) + (z * getSizeC()) + c); 195 break; 196 197 case 2: // ZCT 198 result = ((t * getSizeC() * getSizeZ()) + (c * getSizeZ()) + z); 199 break; 200 201 default: 202 result = -1; 203 } 204 205 return result; 206 } 207 208 /* 209 * (non-Javadoc) 210 * 168 211 * @see ome.io.nio.PixelBuffer#getPlaneSize() 169 212 */ … … 175 218 } 176 219 177 /* (non-Javadoc) 220 /* 221 * (non-Javadoc) 222 * 178 223 * @see ome.io.nio.PixelBuffer#getRegion(java.lang.Integer, java.lang.Long) 179 224 */ … … 187 232 } 188 233 189 /* (non-Javadoc) 190 * @see ome.io.nio.PixelBuffer#getRow(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer) 234 /* 235 * (non-Javadoc) 236 * 237 * @see ome.io.nio.PixelBuffer#getRow(java.lang.Integer, java.lang.Integer, 238 * java.lang.Integer, java.lang.Integer) 191 239 */ 192 240 public MappedByteBuffer getRow(Integer y, Integer z, Integer c, Integer t) … … 199 247 } 200 248 201 /* (non-Javadoc) 202 * @see ome.io.nio.PixelBuffer#getRowOffset(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer) 249 /* 250 * (non-Javadoc) 251 * 252 * @see ome.io.nio.PixelBuffer#getRowOffset(java.lang.Integer, 253 * java.lang.Integer, java.lang.Integer, java.lang.Integer) 203 254 */ 204 255 public Long getRowOffset(Integer y, Integer z, Integer c, Integer t) … … 216 267 } 217 268 218 /* (non-Javadoc) 269 /* 270 * (non-Javadoc) 271 * 219 272 * @see ome.io.nio.PixelBuffer#getRowSize() 220 273 */ … … 228 281 } 229 282 230 /* (non-Javadoc) 283 /* 284 * (non-Javadoc) 285 * 231 286 * @see ome.io.nio.PixelBuffer#getSizeC() 232 287 */ … … 235 290 } 236 291 237 /* (non-Javadoc) 292 /* 293 * (non-Javadoc) 294 * 238 295 * @see ome.io.nio.PixelBuffer#getSizeT() 239 296 */ … … 242 299 } 243 300 244 /* (non-Javadoc) 301 /* 302 * (non-Javadoc) 303 * 245 304 * @see ome.io.nio.PixelBuffer#getSizeX() 246 305 */ … … 249 308 } 250 309 251 /* (non-Javadoc) 310 /* 311 * (non-Javadoc) 312 * 252 313 * @see ome.io.nio.PixelBuffer#getSizeY() 253 314 */ … … 256 317 } 257 318 258 /* (non-Javadoc) 319 /* 320 * (non-Javadoc) 321 * 259 322 * @see ome.io.nio.PixelBuffer#getSizeZ() 260 323 */ … … 263 326 } 264 327 265 /* (non-Javadoc) 266 * @see ome.io.nio.PixelBuffer#getStack(java.lang.Integer, java.lang.Integer) 328 /* 329 * (non-Javadoc) 330 * 331 * @see ome.io.nio.PixelBuffer#getStack(java.lang.Integer, 332 * java.lang.Integer) 267 333 */ 268 334 public MappedByteBuffer getStack(Integer c, Integer t) throws IOException, … … 275 341 } 276 342 277 /* (non-Javadoc) 278 * @see ome.io.nio.PixelBuffer#getStackOffset(java.lang.Integer, java.lang.Integer) 343 /** 344 * Privately returns the absolute stack number. Starts with 1 345 * 346 * @param c 347 * @param t 348 * @return 349 */ 350 private int getAbsoluteStackOffset(Integer c, Integer t) { 351 int result = 0; 352 353 switch (getHeader().getSequence()) { 354 355 case 0: // ZTC 356 result = ((c * getSizeT()) + t); 357 break; 358 359 case 1: // CZT 360 // TODO - tricky one 361 break; 362 363 case 2: // ZCT 364 result = ((t * getSizeC()) + c); 365 break; 366 367 default: 368 result = -1; 369 } 370 371 return result; 372 } 373 374 /* 375 * (non-Javadoc) 376 * 377 * @see ome.io.nio.PixelBuffer#getStackOffset(java.lang.Integer, 378 * java.lang.Integer) 279 379 */ 280 380 public Long getStackOffset(Integer c, Integer t) 281 381 throws DimensionsOutOfBoundsException { 282 // TODO - affected by ZCT ordering 382 283 383 checkBounds(null, null, c, t); 284 384 285 Integer timepointSize = getTimepointSize(); 286 Integer stackSize = getStackSize(); 287 288 return (long) timepointSize * t + (long) stackSize * c; 289 } 290 291 /* (non-Javadoc) 385 int stackNo = getAbsoluteStackOffset(c, t); 386 return (long) stackNo * stackSize; 387 388 } 389 390 /* 391 * (non-Javadoc) 392 * 292 393 * @see ome.io.nio.PixelBuffer#getStackSize() 293 394 */ 294 395 public Integer getStackSize() { 295 // stack is X-Y (plane) by Z (focalpoints) 296 if (stackSize == null) { 297 stackSize = getPlaneSize() * getSizeZ(); 396 397 // stack is X-Y (plane) by Z (focalpoints) ... Z first 398 if (getHeader().getSequence() == 0 || getHeader().getSequence() == 2) { 399 if (stackSize == null) { 400 stackSize = getPlaneSize() * getSizeZ(); 401 } 402 } else { 403 // TODO - we need some new code 298 404 } 299 405 … … 301 407 } 302 408 303 /* (non-Javadoc) 409 /* 410 * (non-Javadoc) 411 * 304 412 * @see ome.io.nio.PixelBuffer#getTimepoint(java.lang.Integer) 305 413 */ … … 313 421 } 314 422 315 /* (non-Javadoc) 423 /* 424 * (non-Javadoc) 425 * 316 426 * @see ome.io.nio.PixelBuffer#getTimepointOffset(java.lang.Integer) 317 427 */ … … 326 436 } 327 437 328 /* (non-Javadoc) 438 /* 439 * (non-Javadoc) 440 * 329 441 * @see ome.io.nio.PixelBuffer#getTimepointSize() 330 442 */ … … 337 449 } 338 450 339 /* (non-Javadoc) 451 /* 452 * (non-Javadoc) 453 * 340 454 * @see ome.io.nio.PixelBuffer#getTotalSize() 341 455 */ … … 348 462 } 349 463 350 351 /* (non-Javadoc) 352 * @see ome.io.nio.PixelBuffer#checkBounds(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer) 464 /* 465 * (non-Javadoc) 466 * 467 * @see ome.io.nio.PixelBuffer#checkBounds(java.lang.Integer, 468 * java.lang.Integer, java.lang.Integer, java.lang.Integer) 353 469 */ 354 470 public void checkBounds(Integer y, Integer z, Integer c, Integer t) … … 374 490 } 375 491 } 376 377 /* (non-Javadoc) 492 493 /* 494 * (non-Javadoc) 495 * 378 496 * @see ome.io.nio.PixelBuffer#getId() 379 497 */ … … 382 500 } 383 501 502 /** 503 * Getter for Header 504 * 505 * @return 506 */ 384 507 public DeltaVisionHeader getHeader() { 385 508 return header; 386 509 } 387 510 511 /* 512 * (non-Javadoc) 513 * 514 * @see ome.io.nio.PixelBuffer#getPath() 515 */ 516 public String getPath() { 517 return originalFile.getPath(); 518 } 519 520 /** 521 * Setter for Header 522 * 523 * @param header 524 */ 388 525 public void setHeader(DeltaVisionHeader header) { 389 526 this.header = header; 390 527 } 391 528 392 529 // ---------- set or write methods ---------- 393 530 /** … … 468 605 } 469 606 470 /* (non-Javadoc)471 * @see ome.io.nio.PixelBuffer#getPath()472 */473 public String getPath() {474 return originalFile.getPath();475 }476 477 607 // ---------- private methods ---------------------- 478 608 … … 483 613 return header.getBytesPerPixel(); 484 614 } 485 615 486 616 /** 487 617 * This method is used to establish most of the DeltaVision data that the … … 495 625 File file = new File(originalFile.getPath()); 496 626 RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw"); 497 627 498 628 channel = randomAccessFile.getChannel(); 499 629 500 630 buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, 1024); 501 631 -
branches/3.0-Beta2/components/romio/src/ome/io/nio/DeltaVisionHeader.java
r1578 r1596 2 2 3 3 import java.nio.ByteOrder; 4 import java.nio.CharBuffer; 4 5 import java.nio.MappedByteBuffer; 6 7 import ome.io.nio.utests.DeltaVisionTest; 8 9 import org.apache.commons.logging.Log; 10 import org.apache.commons.logging.LogFactory; 5 11 6 12 /** … … 53 59 private String imageType; 54 60 61 private transient static Log log = LogFactory.getLog(DeltaVisionHeader.class); 62 55 63 /** 56 64 * Constructor … … 61 69 public DeltaVisionHeader(MappedByteBuffer data, boolean endian) { 62 70 71 63 72 // make sure this is a header 64 73 if (data.capacity() != IMAGE_HEADER_SIZE) { … … 67 76 } 68 77 78 // set our data 79 this.data = data; 80 69 81 // endianness 70 82 if (isNative()) { 83 data.order(ByteOrder.BIG_ENDIAN); 84 } else { 71 85 data.order(ByteOrder.LITTLE_ENDIAN); 72 } else { 73 data.order(ByteOrder.BIG_ENDIAN); 74 } 75 76 // set our data 77 this.data = data; 86 } 87 78 88 } 79 89 … … 91 101 */ 92 102 public int getImageCount() { 93 return data.get Short(IMAGE_COUNT_OFFSET);103 return data.getInt(IMAGE_COUNT_OFFSET); 94 104 } 95 105 … … 163 173 */ 164 174 public int getSizeZ() { 165 return getImageCount() / getSizeC() * getSizeT(); 175 176 int result = 0; 177 if (getSizeC() == 0) { 178 result = getImageCount() / getSizeT(); 179 } else if (getSizeT() == 0) { 180 result = getImageCount() / getSizeC(); 181 } else { 182 result = getImageCount()/(getSizeT() * getSizeC()); 183 } 184 185 return result; 166 186 } 167 187
