Changeset 7074
- Timestamp:
- 10/14/10 11:01:07 (9 years ago)
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/4.2/components/bio-formats/src/loci/formats/in/FluoviewReader.java
r7073 r7074 70 70 private String date = null; 71 71 private int timeIndex = -1; 72 private int fieldIndex = -1; 73 private int montageIndex = -1; 72 74 73 75 /** Timestamps for each plane, in seconds. */ … … 77 79 private String[] gains, voltages, offsets, channelNames, lensNA; 78 80 private String mag, detectorManufacturer, objectiveManufacturer, comment; 81 82 private double[][] montageOffsets; 83 private double[][] fieldOffsets; 79 84 80 85 // -- Constructor -- … … 131 136 timeIndex = -1; 132 137 stamps = null; 138 fieldIndex = -1; 139 montageIndex = -1; 140 fieldOffsets = null; 141 montageOffsets = null; 133 142 } 134 143 } … … 270 279 if (dimensionOrder.indexOf("S") == -1) dimensionOrder += "S"; 271 280 seriesCount *= size; 281 282 if (name.equals("montage")) montageIndex = i - 2; 283 else if (name.equals("xy")) fieldIndex = i - 2; 272 284 } 273 285 } … … 362 374 store.setPixelsPhysicalSizeZ(voxelZ, i); 363 375 store.setPixelsTimeIncrement(voxelT, i); 376 377 int montage = getMontage(i); 378 int field = getField(i); 379 380 double posX = 0d, posY = 0d, posZ = 0d; 381 382 if (montageOffsets != null) { 383 posX += montageOffsets[montage][0]; 384 posY += montageOffsets[montage][1]; 385 posZ += montageOffsets[montage][2]; 386 } 387 if (fieldOffsets != null) { 388 posX += fieldOffsets[field][0]; 389 posY += fieldOffsets[field][1]; 390 posZ += fieldOffsets[field][2]; 391 } 392 393 for (int image=0; image<getImageCount(); image++) { 394 store.setPlanePositionX(posX, i, image); 395 store.setPlanePositionY(posY, i, image); 396 store.setPlanePositionZ(posZ, i, image); 397 } 364 398 } 365 399 … … 557 591 date += " " + value; 558 592 } 593 else if (key.equals("MontageOffsets")) { 594 String[] offsets = value.split("\t"); 595 montageOffsets = new double[offsets.length - 1][3]; 596 for (int i=1; i<offsets.length; i++) { 597 String[] v = offsets[i].trim().split(","); 598 for (int j=0; j<v.length; j++) { 599 montageOffsets[i - 1][j] = Double.parseDouble(v[j].trim()); 600 } 601 } 602 } 603 else if (key.equals("XYFields")) { 604 String[] offsets = value.split("\t"); 605 fieldOffsets = new double[offsets.length - 1][3]; 606 for (int i=1; i<offsets.length; i++) { 607 String[] v = offsets[i].trim().split(","); 608 for (int j=0; j<v.length; j++) { 609 fieldOffsets[i - 1][j] = Double.parseDouble(v[j].trim()); 610 } 611 } 612 } 559 613 } 560 614 else if (token.startsWith("Z") && token.indexOf(" um ") != -1) { … … 598 652 } 599 653 654 private int getMontage(int seriesIndex) { 655 if (montageOffsets == null && fieldOffsets == null) return 0; 656 int[] pos = getPos(seriesIndex); 657 return montageIndex < fieldIndex ? pos[0] : pos[1]; 658 } 659 660 private int getField(int seriesIndex) { 661 if (montageOffsets == null && fieldOffsets == null) return 0; 662 int[] pos = getPos(seriesIndex); 663 return montageIndex < fieldIndex ? pos[1] : pos[0]; 664 } 665 666 private int[] getPos(int seriesIndex) { 667 int[] lengths = new int[2]; 668 if (montageIndex < fieldIndex) { 669 lengths[0] = montageOffsets == null ? 1 : montageOffsets.length; 670 lengths[1] = fieldOffsets == null ? 1 : fieldOffsets.length; 671 } 672 else { 673 lengths[1] = montageOffsets == null ? 1 : montageOffsets.length; 674 lengths[0] = fieldOffsets == null ? 1 : fieldOffsets.length; 675 } 676 return FormatTools.rasterToPosition(lengths, seriesIndex); 677 } 678 600 679 } -
trunk/components/bio-formats/src/loci/formats/in/FluoviewReader.java
r7073 r7074 70 70 private String date = null; 71 71 private int timeIndex = -1; 72 private int fieldIndex = -1; 73 private int montageIndex = -1; 72 74 73 75 /** Timestamps for each plane, in seconds. */ … … 77 79 private String[] gains, voltages, offsets, channelNames, lensNA; 78 80 private String mag, detectorManufacturer, objectiveManufacturer, comment; 81 82 private double[][] montageOffsets; 83 private double[][] fieldOffsets; 79 84 80 85 // -- Constructor -- … … 131 136 timeIndex = -1; 132 137 stamps = null; 138 fieldIndex = -1; 139 montageIndex = -1; 140 fieldOffsets = null; 141 montageOffsets = null; 133 142 } 134 143 } … … 270 279 if (dimensionOrder.indexOf("S") == -1) dimensionOrder += "S"; 271 280 seriesCount *= size; 281 282 if (name.equals("montage")) montageIndex = i - 2; 283 else if (name.equals("xy")) fieldIndex = i - 2; 272 284 } 273 285 } … … 362 374 store.setPixelsPhysicalSizeZ(voxelZ, i); 363 375 store.setPixelsTimeIncrement(voxelT, i); 376 377 int montage = getMontage(i); 378 int field = getField(i); 379 380 double posX = 0d, posY = 0d, posZ = 0d; 381 382 if (montageOffsets != null) { 383 posX += montageOffsets[montage][0]; 384 posY += montageOffsets[montage][1]; 385 posZ += montageOffsets[montage][2]; 386 } 387 if (fieldOffsets != null) { 388 posX += fieldOffsets[field][0]; 389 posY += fieldOffsets[field][1]; 390 posZ += fieldOffsets[field][2]; 391 } 392 393 for (int image=0; image<getImageCount(); image++) { 394 store.setPlanePositionX(posX, i, image); 395 store.setPlanePositionY(posY, i, image); 396 store.setPlanePositionZ(posZ, i, image); 397 } 364 398 } 365 399 … … 557 591 date += " " + value; 558 592 } 593 else if (key.equals("MontageOffsets")) { 594 String[] offsets = value.split("\t"); 595 montageOffsets = new double[offsets.length - 1][3]; 596 for (int i=1; i<offsets.length; i++) { 597 String[] v = offsets[i].trim().split(","); 598 for (int j=0; j<v.length; j++) { 599 montageOffsets[i - 1][j] = Double.parseDouble(v[j].trim()); 600 } 601 } 602 } 603 else if (key.equals("XYFields")) { 604 String[] offsets = value.split("\t"); 605 fieldOffsets = new double[offsets.length - 1][3]; 606 for (int i=1; i<offsets.length; i++) { 607 String[] v = offsets[i].trim().split(","); 608 for (int j=0; j<v.length; j++) { 609 fieldOffsets[i - 1][j] = Double.parseDouble(v[j].trim()); 610 } 611 } 612 } 559 613 } 560 614 else if (token.startsWith("Z") && token.indexOf(" um ") != -1) { … … 598 652 } 599 653 654 private int getMontage(int seriesIndex) { 655 if (montageOffsets == null && fieldOffsets == null) return 0; 656 int[] pos = getPos(seriesIndex); 657 return montageIndex < fieldIndex ? pos[0] : pos[1]; 658 } 659 660 private int getField(int seriesIndex) { 661 if (montageOffsets == null && fieldOffsets == null) return 0; 662 int[] pos = getPos(seriesIndex); 663 return montageIndex < fieldIndex ? pos[1] : pos[0]; 664 } 665 666 private int[] getPos(int seriesIndex) { 667 int[] lengths = new int[2]; 668 if (montageIndex < fieldIndex) { 669 lengths[0] = montageOffsets == null ? 1 : montageOffsets.length; 670 lengths[1] = fieldOffsets == null ? 1 : fieldOffsets.length; 671 } 672 else { 673 lengths[1] = montageOffsets == null ? 1 : montageOffsets.length; 674 lengths[0] = fieldOffsets == null ? 1 : fieldOffsets.length; 675 } 676 return FormatTools.rasterToPosition(lengths, seriesIndex); 677 } 678 600 679 }
Note: See TracChangeset
for help on using the changeset viewer.