public static ArrayList< ViewSetup > createViewSetupsFromImgLoader(SimulatedBeadsImgLoader2 imgLoader) { final ArrayList< ViewSetup > viewSetups = new ArrayList< ViewSetup >(); SimulateBeads2 sb = imgLoader.getSimulateBeads(); int vid = 0; for (int a : new ArrayList<>(sb.angleTransforms.keySet()).stream().sorted().collect( Collectors.toList() )) for (int channel : new ArrayList<>(sb.channelTransforms.keySet()).stream().sorted().collect( Collectors.toList() )) for (int illum : new ArrayList<>(sb.illumTransforms.keySet()).stream().sorted().collect( Collectors.toList() )) for (int tile : new ArrayList<>(sb.tileTransforms.keySet()).stream().sorted().collect( Collectors.toList() )) { final VoxelDimensions voxelSize = new FinalVoxelDimensions( "pixels", 1, 1, 1 ); final Dimensions dim = imgLoader.getSimulateBeads().getImg( 0, a, channel, tile, illum ); viewSetups.add( new ViewSetup( vid++, Integer.toString( vid ), dim, voxelSize, new Tile(tile), new Channel(channel), new Angle(a), new Illumination(illum) ) ); } return viewSetups; }
public void add( final ViewDescription vd ) { if ( vd == null ) return; this.ts.add( vd.getTimePoint() ); this.cs.add( vd.getViewSetup().getChannel() ); this.is.add( vd.getViewSetup().getIllumination() ); this.as.add( vd.getViewSetup().getAngle() ); this.vds.add( vd ); }
/** * find ViewSetup index corresponding to given (angle, illumination, * channel) triple. * * @return setup index or -1 if no corresponding setup was found. */ protected static int getViewSetupId( final ArrayList< ViewSetup > setups, final int angle, final int illumination, final int channel ) { for ( final ViewSetup s : setups ) if ( s.getAngle().getId() == angle && s.getIllumination().getId() == illumination && s.getChannel().getId() == channel ) return s.getId(); return -1; }
/** * Updates one specific ViewSetup using the imageMetaDataCache * * @param setup - {@link ViewSetup}s that can potentially be updated if it is in the cache * @param forceUpdate - overwrite the data if it is already present * @return true if something was updated, false if it was not in the cache or if could have been updated but was already there */ public boolean updateXMLMetaData( final ViewSetup setup, final boolean forceUpdate ) { boolean updated = false; if ( viewIdLookUp.containsKey( setup.getId() ) ) { // look up the metadata using the ViewId linked by the ViewSetupId final Pair< Dimensions, VoxelDimensions > metaData = imageMetaDataCache.get( viewIdLookUp.get( setup.getId() ) ); if ( !setup.hasSize() || forceUpdate ) { setup.setSize( metaData.getA() ); updated = true; } if ( !setup.hasVoxelSize() || forceUpdate ) { setup.setVoxelSize( metaData.getB() ); updated = true; } } return updated; }
newViewSetupId = Math.max( vs.getId(), newViewSetupId ); newTileId = Math.max( vs.getTile().getId(), newTileId ); newChannelId = Math.max( vs.getChannel().getId(), newChannelId ); newAngleId = Math.max( vs.getAngle().getId(), newAngleId ); newIllumId = Math.max( vs.getIllumination().getId(), newIllumId ); new ViewSetup( newViewSetupId++, c.getName(), for ( int i = 0; i < illums.size(); ++i ) newViewSetups.add( new ViewSetup( newViewSetupId++, channels.get( c ).getName() + "_" + illums.get( i ).getName(), new ViewSetup( newViewSetupId++, "Fused", new ViewSetup( newViewSetupId++, vs.getName(), fusion.getDownsampledBoundingBox(), new FinalVoxelDimensions( "px", Util.getArrayFromValue( downsampling, 3 ) ), vs.getTile(), vs.getChannel(), vs.getAngle(), vs.getIllumination() ) );
public static ViewSetup getViewSetup( final List< ? extends ViewSetup > list, final Channel c, final Angle a, final Illumination i, final Tile x ) { for ( final ViewSetup viewSetup : list ) { if ( viewSetup.getAngle().getId() == a.getId() && viewSetup.getChannel().getId() == c.getId() && viewSetup.getIllumination().getId() == i.getId() && viewSetup.getTile().getId() == x.getId() ) { return viewSetup; } } return null; }
if ( !setup.hasVoxelSize() ) " angle: " + vd.getViewSetup().getAngle().getName() + " channel: " + vd.getViewSetup().getChannel().getName() + " illum: " + vd.getViewSetup().getIllumination().getName() ); setup.setVoxelSize( voxelSize ); if ( !setup.hasVoxelSize() ) " angle: " + vd.getViewSetup().getAngle().getName() + " channel: " + vd.getViewSetup().getChannel().getName() + " illum: " + vd.getViewSetup().getIllumination().getName() ); VoxelDimensions voxelSize = setup.getVoxelSize(); final double calX = voxelSize.dimension( 0 ); final double calY = voxelSize.dimension( 1 );
final ViewSetup vOut = dataOut.getSequenceDescription().getViewSetups().get( v.getId() ); "Could not find corresponding ViewSetupId=" + v.getId() + " in xml '" + xmls.get( i ) + "'" ); if ( vOut.getSize() == null && v.getSize() != null ) vOut.setSize( v.getSize() ); if ( vOut.getVoxelSize() == null && v.getVoxelSize() != null ) vOut.setVoxelSize( v.getVoxelSize() ); if ( !vOut.getAngle().hasRotation() && v.getAngle().hasRotation() ) vOut.getAngle().setRotation( v.getAngle().getRotationAxis(), v.getAngle().getRotationAngleDegrees() ); for ( final ViewSetup vs : data.getSequenceDescription().getViewSetupsOrdered() ) final ViewDescription vd = data.getSequenceDescription().getViewDescription( tp.getId(), vs.getId() ); final ViewInterestPointLists vipl = vip.getViewInterestPointLists( tp.getId(), vs.getId() ); final ViewInterestPointLists viplOut = vipOut.getViewInterestPointLists( tp.getId(), vs.getId() );
dom.downsampleXY = DownsampleTools.downsampleFactor( downsampleXYIndex, downsampleZ, vd.getViewSetup().getVoxelSize() ); else dom.downsampleXY = downsampleXYIndex; vd.getViewSetup().getAngle().getId() + " channelId: " + vd.getViewSetup().getChannel().getId() + " illumId: " + vd.getViewSetup().getIllumination().getId() + ". Continuing with next one." ); e.printStackTrace();
protected String nameForGroup( final Group< ViewDescription > group ) { final ViewDescription vd1 = group.iterator().next(); String name = "TP=" + vd1.getTimePointId() + " Angle=" + vd1.getViewSetup().getAngle().getName() + " Channel=" + vd1.getViewSetup().getChannel().getName(); if ( !groupIllums ) name += " Illum=" + vd1.getViewSetup().getChannel().getName(); if ( !groupTiles ) name += " Tile=" + vd1.getViewSetup().getTile().getName(); return name; }
public static ArrayList< Illumination > getAllIlluminationsForChannelTimepointSorted( final SpimData data, final Collection< ? extends ViewId > viewIds, final Channel c, final TimePoint t ) { final HashSet< Illumination > illumSet = new HashSet< Illumination >(); for ( final ViewId v : viewIds ) { final ViewDescription vd = data.getSequenceDescription().getViewDescription( v ); if ( vd.isPresent() && v.getTimePointId() == t.getId() && vd.getViewSetup().getChannel().getId() == c.getId() ) illumSet.add( vd.getViewSetup().getIllumination() ); } final ArrayList< Illumination > illums = new ArrayList< Illumination >(); illums.addAll( illumSet ); Collections.sort( illums ); return illums; }
public static ArrayList< ViewId > getAllViewIdsSorted( final SpimData data, final List< ? extends ViewSetup > setups, final List< ? extends TimePoint > tps ) { final ArrayList< ViewId > viewIds = new ArrayList< ViewId >(); for ( final TimePoint tp : tps ) for ( final ViewSetup vs : setups ) { final ViewId v = new ViewId( tp.getId(), vs.getId() ); final ViewDescription vd = data.getSequenceDescription().getViewDescription( v ); if ( vd.isPresent() ) viewIds.add( vd ); } Collections.sort( viewIds ); return viewIds; }
final int oc = old.getViewSetup().getChannel().getId(); if ( vs.getChannel().getId() == oc ) vsNew = vs; return new ViewId( tpNew.getId(), vsNew.getId() ); final int oc = old.getViewSetup().getChannel().getId(); final int oi = old.getViewSetup().getIllumination().getId(); if ( vs.getChannel().getId() == oc && vs.getIllumination().getId() == oi ) vsNew = vs; return new ViewId( tpNew.getId(), vsNew.getId() );
public static double getAverageAnisotropyFactor( final SpimData spimData, final Collection< ? extends ViewId > views ) { final SequenceDescription seq = spimData.getSequenceDescription(); double avgFactor = 0; int count = 0; for ( final ViewId vd : views ) { final ViewSetup vs = seq.getViewSetups().get( vd.getViewSetupId() ); final VoxelDimensions vx = vs.getVoxelSize(); if ( vx != null ) { final double x = vx.dimension( 0 ); final double y = vx.dimension( 1 ); final double z = vx.dimension( 2 ); if ( x == y ) { avgFactor += z / x; ++count; } } } if ( count > 0 ) avgFactor /= (double)count; else avgFactor = 1.0; return avgFactor; }
final ViewDescription vd = sd.getViewDescription( t.getId(), vs.getId() ); map.put( vd.getViewSetup().getTile(), vd ); final int width = (int)vd.getViewSetup().getSize().dimension( 0 ); final int height = (int)vd.getViewSetup().getSize().dimension( 1 ); final int depth = (int)vd.getViewSetup().getSize().dimension( 2 ); final int numPx = width * height; for ( final ViewSetup vs : sd.getViewSetupsOrdered() ) if ( vs.getTile().getId() == t.getId() ) vs.setSize( new FinalDimensions( meta.imageSizes().get( t.getId() ) ) ); IOFunctions.println( "Resetting image size for viewSetup: " + vs.getId() + ", old: " + width + "x" + height + "x" + depth + ", new: " + width + "x" + height + "x" + z );
tiles.add( data.getSequenceDescription().getViewDescription( viewId ).getViewSetup().getTile().getId() ); illums.add( data.getSequenceDescription().getViewDescription( viewId ).getViewSetup().getIllumination().getId() ); channels.add( data.getSequenceDescription().getViewDescription( viewId ).getViewSetup().getChannel().getId() );
public static < V extends ViewId > ArrayList< Pair< Channel, Channel > > identifyChannelPairs( final SpimData2 spimData, final List< V > viewIds ) { final SequenceDescription seq = spimData.getSequenceDescription(); final HashSet< Channel > channelSet = new HashSet<>(); for ( final V viewId : viewIds ) channelSet.add( seq.getViewDescription( viewId ).getViewSetup().getChannel() ); final ArrayList< Channel > channels = new ArrayList<>( channelSet ); Collections.sort( channels ); final ArrayList< Pair< Channel, Channel > > channelPairs = new ArrayList<>(); for ( int c1 = 0; c1 < channels.size() - 1; ++c1 ) for ( int c2 = c1 + 1; c2 < channels.size(); ++c2 ) channelPairs.add( new ValuePair< Channel, Channel >( channels.get( c1 ), channels.get( c2 ) ) ); return channelPairs; }
public static ArrayList< Angle > getAllAnglesForChannelTimepointSorted( final SpimData data, final Collection< ? extends ViewId > viewIds, final Channel c, final TimePoint t ) { final HashSet< Angle > angleSet = new HashSet< Angle >(); for ( final ViewId v : viewIds ) { final ViewDescription vd = data.getSequenceDescription().getViewDescription( v ); if ( vd.isPresent() && v.getTimePointId() == t.getId() && vd.getViewSetup().getChannel().getId() == c.getId() ) angleSet.add( vd.getViewSetup().getAngle() ); } final ArrayList< Angle > angles = new ArrayList< Angle >(); angles.addAll( angleSet ); Collections.sort( angles ); return angles; }
public static boolean loadDimensions( final SpimData2 spimData, final List< ViewSetup > viewsetups ) { boolean loadedDimensions = false; for ( final ViewSetup vs : viewsetups ) { if ( vs.getSize() == null ) { IOFunctions.println( "Dimensions of viewsetup " + vs.getId() + " unknown. Loading them ... " ); for ( final TimePoint t : spimData.getSequenceDescription().getTimePoints().getTimePointsOrdered() ) { final ViewDescription vd = spimData.getSequenceDescription().getViewDescription( t.getId(), vs.getId() ); if ( vd.isPresent() ) { Dimensions dim = spimData.getSequenceDescription().getImgLoader().getSetupImgLoader( vd.getViewSetupId() ).getImageSize( vd.getTimePointId() ); IOFunctions.println( "Dimensions: " + dim.dimension( 0 ) + "x" + dim.dimension( 1 ) + "x" + dim.dimension( 2 ) + ", loaded from tp:" + t.getId() + " vs: " + vs.getId() ); vs.setSize( dim ); loadedDimensions = true; break; } else { IOFunctions.println( "ViewSetup: " + vs.getId() + " not present in timepoint: " + t.getId() ); } } } } return loadedDimensions; }
final String angleName = vdsAngle.getViews().iterator().next().getViewSetup().getAngle().getName(); if (tilesGrouped.size() < 2) continue; final int firstviewSetupId = data.getSequenceDescription().getViewSetupsOrdered().get( 0 ).getId(); Generic_Resave_HDF5.lastExportPath = String.join( File.separator, chosenPath.getAbsolutePath(), "dataset"); final Parameters params = Generic_Resave_HDF5.getParameters( perSetupExportMipmapInfo.get( firstviewSetupId ), true, true );